diff --git a/yaml-0.1.3/LICENSE b/LICENSE.libyaml
similarity index 100%
rename from yaml-0.1.3/LICENSE
rename to LICENSE.libyaml
diff --git a/Makefile b/Makefile
index 4af8483..fb4ef6b 100644
--- a/Makefile
+++ b/Makefile
@@ -13,28 +13,21 @@
 	decode.go\
 	encode.go\
 
-CGO_LDFLAGS+=-lm -lpthread
-CGO_CFLAGS+=-I$(YAML)/include
-#CGO_OFILES+=_lib/*.o
 CGO_OFILES+=\
 	helpers.o\
-	_lib/api.o\
-	_lib/scanner.o\
-	_lib/reader.o\
-	_lib/parser.o\
-	_lib/writer.o\
-	_lib/emitter.o\
+	api.o\
+	scanner.o\
+	reader.o\
+	parser.o\
+	writer.o\
+	emitter.o\
 
-
-all: package
-
-_lib/api.o: $(LIBYAML)
-	@mkdir -p _lib
-	cd _lib && ar x $(LIBYAML)
-
-$(LIBYAML):
-	cd $(YAML) && CFLAGS=-fpic ./configure && make
-
-CLEANFILES=_lib
+CGO_LDFLAGS+=-lm -lpthread
+CGO_CFLAGS+=\
+	-I$(PWD) \
+	-DYAML_VERSION_STRING='"0.1.3"' \
+	-DYAML_VERSION_MAJOR=0 \
+	-DYAML_VERSION_MINOR=1 \
+	-DYAML_VERSION_PATCH=3 \
 
 include $(GOROOT)/src/Make.pkg
diff --git a/yaml-0.1.3/src/api.c b/api.c
similarity index 100%
rename from yaml-0.1.3/src/api.c
rename to api.c
diff --git a/yaml-0.1.3/src/emitter.c b/emitter.c
similarity index 100%
rename from yaml-0.1.3/src/emitter.c
rename to emitter.c
diff --git a/yaml-0.1.3/src/loader.c b/loader.c
similarity index 100%
rename from yaml-0.1.3/src/loader.c
rename to loader.c
diff --git a/yaml-0.1.3/src/parser.c b/parser.c
similarity index 100%
rename from yaml-0.1.3/src/parser.c
rename to parser.c
diff --git a/yaml-0.1.3/src/reader.c b/reader.c
similarity index 100%
rename from yaml-0.1.3/src/reader.c
rename to reader.c
diff --git a/yaml-0.1.3/src/scanner.c b/scanner.c
similarity index 100%
rename from yaml-0.1.3/src/scanner.c
rename to scanner.c
diff --git a/yaml-0.1.3/src/writer.c b/writer.c
similarity index 100%
rename from yaml-0.1.3/src/writer.c
rename to writer.c
diff --git a/yaml-0.1.3/Makefile.am b/yaml-0.1.3/Makefile.am
deleted file mode 100644
index 7835b61..0000000
--- a/yaml-0.1.3/Makefile.am
+++ /dev/null
@@ -1,15 +0,0 @@
-## Run `./bootstrap` to generate the "Makefile.in" files in this directory and
-## the "$SUBDIRS" subdirectories.
-
-SUBDIRS = include src . tests win32
-
-EXTRA_DIST = README LICENSE doc/doxygen.cfg
-
-maintainer-clean-local:
-	-rm -f aclocal.m4 config.h.in configure config/*
-	-find ${builddir} -name Makefile.in -exec rm -f '{}' ';'
-
-.PHONY: bootstrap
-bootstrap: maintainer-clean
-	./bootstrap
-
diff --git a/yaml-0.1.3/Makefile.in b/yaml-0.1.3/Makefile.in
deleted file mode 100644
index 3b9afbe..0000000
--- a/yaml-0.1.3/Makefile.in
+++ /dev/null
@@ -1,651 +0,0 @@
-# Makefile.in generated by automake 1.10.2 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = .
-DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in $(srcdir)/config.h.in \
-	$(top_srcdir)/configure config/config.guess config/config.sub \
-	config/depcomp config/install-sh config/ltmain.sh \
-	config/missing
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
- configure.lineno config.status.lineno
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES =
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
-  distclean-recursive maintainer-clean-recursive
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-distdir = $(PACKAGE)-$(VERSION)
-top_distdir = $(distdir)
-am__remove_distdir = \
-  { test ! -d $(distdir) \
-    || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
-         && rm -fr $(distdir); }; }
-DIST_ARCHIVES = $(distdir).tar.gz
-GZIP_ENV = --best
-distuninstallcheck_listfiles = find . -type f -print
-distcleancheck_listfiles = find . -type f -print
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DOXYGEN = @DOXYGEN@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-YAML_LT_AGE = @YAML_LT_AGE@
-YAML_LT_CURRENT = @YAML_LT_CURRENT@
-YAML_LT_RELEASE = @YAML_LT_RELEASE@
-YAML_LT_REVISION = @YAML_LT_REVISION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-SUBDIRS = include src . tests win32
-EXTRA_DIST = README LICENSE doc/doxygen.cfg
-all: config.h
-	$(MAKE) $(AM_MAKEFLAGS) all-recursive
-
-.SUFFIXES:
-am--refresh:
-	@:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \
-	      cd $(srcdir) && $(AUTOMAKE) --foreign  \
-		&& exit 0; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    echo ' $(SHELL) ./config.status'; \
-	    $(SHELL) ./config.status;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	$(SHELL) ./config.status --recheck
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
-
-config.h: stamp-h1
-	@if test ! -f $@; then \
-	  rm -f stamp-h1; \
-	  $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
-	else :; fi
-
-stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
-	@rm -f stamp-h1
-	cd $(top_builddir) && $(SHELL) ./config.status config.h
-$(srcdir)/config.h.in:  $(am__configure_deps) 
-	cd $(top_srcdir) && $(AUTOHEADER)
-	rm -f stamp-h1
-	touch $@
-
-distclean-hdr:
-	-rm -f config.h stamp-h1
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-distclean-libtool:
-	-rm -f libtool config.lt
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    dot_seen=yes; \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done; \
-	if test "$$dot_seen" = "no"; then \
-	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
-	fi; test -z "$$fail"
-
-$(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	tags=; \
-	here=`pwd`; \
-	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
-	  include_option=--etags-include; \
-	  empty_fix=.; \
-	else \
-	  include_option=--include; \
-	  empty_fix=; \
-	fi; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
-	  fi; \
-	done; \
-	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
-	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	tags=; \
-	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	$(am__remove_distdir)
-	test -d $(distdir) || mkdir $(distdir)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
-	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
-	    || exit 1; \
-	  fi; \
-	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
-	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
-		am__remove_distdir=: \
-		am__skip_length_check=: \
-	        distdir) \
-	      || exit 1; \
-	  fi; \
-	done
-	-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
-	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
-	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
-	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
-	|| chmod -R a+r $(distdir)
-dist-gzip: distdir
-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-	$(am__remove_distdir)
-
-dist-bzip2: distdir
-	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
-	$(am__remove_distdir)
-
-dist-lzma: distdir
-	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
-	$(am__remove_distdir)
-
-dist-tarZ: distdir
-	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
-	$(am__remove_distdir)
-
-dist-shar: distdir
-	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
-	$(am__remove_distdir)
-
-dist-zip: distdir
-	-rm -f $(distdir).zip
-	zip -rq $(distdir).zip $(distdir)
-	$(am__remove_distdir)
-
-dist dist-all: distdir
-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-	$(am__remove_distdir)
-
-# This target untars the dist file and tries a VPATH configuration.  Then
-# it guarantees that the distribution is self-contained by making another
-# tarfile.
-distcheck: dist
-	case '$(DIST_ARCHIVES)' in \
-	*.tar.gz*) \
-	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
-	*.tar.bz2*) \
-	  bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
-	*.tar.lzma*) \
-	  unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
-	*.tar.Z*) \
-	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
-	*.shar.gz*) \
-	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
-	*.zip*) \
-	  unzip $(distdir).zip ;;\
-	esac
-	chmod -R a-w $(distdir); chmod a+w $(distdir)
-	mkdir $(distdir)/_build
-	mkdir $(distdir)/_inst
-	chmod a-w $(distdir)
-	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
-	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
-	  && cd $(distdir)/_build \
-	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
-	    $(DISTCHECK_CONFIGURE_FLAGS) \
-	  && $(MAKE) $(AM_MAKEFLAGS) \
-	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
-	  && $(MAKE) $(AM_MAKEFLAGS) check \
-	  && $(MAKE) $(AM_MAKEFLAGS) install \
-	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
-	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
-	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
-	        distuninstallcheck \
-	  && chmod -R a-w "$$dc_install_base" \
-	  && ({ \
-	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
-	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
-	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
-	  && rm -rf "$$dc_destdir" \
-	  && $(MAKE) $(AM_MAKEFLAGS) dist \
-	  && rm -rf $(DIST_ARCHIVES) \
-	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
-	$(am__remove_distdir)
-	@(echo "$(distdir) archives ready for distribution: "; \
-	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
-	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
-distuninstallcheck:
-	@cd $(distuninstallcheck_dir) \
-	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
-	   || { echo "ERROR: files left after uninstall:" ; \
-	        if test -n "$(DESTDIR)"; then \
-	          echo "  (check DESTDIR support)"; \
-	        fi ; \
-	        $(distuninstallcheck_listfiles) ; \
-	        exit 1; } >&2
-distcleancheck: distclean
-	@if test '$(srcdir)' = . ; then \
-	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
-	  exit 1 ; \
-	fi
-	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
-	  || { echo "ERROR: files left in build directory after distclean:" ; \
-	       $(distcleancheck_listfiles) ; \
-	       exit 1; } >&2
-check-am: all-am
-check: check-recursive
-all-am: Makefile config.h
-installdirs: installdirs-recursive
-installdirs-am:
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-recursive
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-recursive
-	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-hdr \
-	distclean-libtool distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-info: info-recursive
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-recursive
-
-install-exec-am:
-
-install-html: install-html-recursive
-
-install-info: install-info-recursive
-
-install-man:
-
-install-pdf: install-pdf-recursive
-
-install-ps: install-ps-recursive
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
-	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-	-rm -rf $(top_srcdir)/autom4te.cache
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic \
-	maintainer-clean-local
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am am--refresh check check-am clean clean-generic \
-	clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
-	dist-gzip dist-lzma dist-shar dist-tarZ dist-zip distcheck \
-	distclean distclean-generic distclean-hdr distclean-libtool \
-	distclean-tags distcleancheck distdir distuninstallcheck dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs installdirs-am \
-	maintainer-clean maintainer-clean-generic \
-	maintainer-clean-local mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
-	uninstall uninstall-am
-
-
-maintainer-clean-local:
-	-rm -f aclocal.m4 config.h.in configure config/*
-	-find ${builddir} -name Makefile.in -exec rm -f '{}' ';'
-
-.PHONY: bootstrap
-bootstrap: maintainer-clean
-	./bootstrap
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/yaml-0.1.3/README b/yaml-0.1.3/README
deleted file mode 100644
index a762f97..0000000
--- a/yaml-0.1.3/README
+++ /dev/null
@@ -1,29 +0,0 @@
-LibYAML - A C library for parsing and emitting YAML.
-
-The project is in an early stage of development.
-
-To build and install the library, run:
-$ ./configure
-$ make
-# make install
-
-If you checked the source code from the Subversion repository, run
-$ ./bootstrap
-$ ./configure
-$ make
-# make install
-
-For more information, check the LibYAML homepage:
-'http://pyyaml.org/wiki/LibYAML'.
-
-Post your questions and opinions to the YAML-Core mailing list:
-'http://lists.sourceforge.net/lists/listinfo/yaml-core'.
-
-Submit bug reports and feature requests to the LibYAML bug tracker:
-'http://pyyaml.org/newticket?component=libyaml'.
-
-LibYAML is written by Kirill Simonov <xi@resolvent.net>.  It is released
-under the MIT license.  See the file LICENSE for more details.
-
-This project is developed for Python Software Foundation as a part of
-Google Summer of Code under the mentorship of Clark Evans.
diff --git a/yaml-0.1.3/aclocal.m4 b/yaml-0.1.3/aclocal.m4
deleted file mode 100644
index 444dc09..0000000
--- a/yaml-0.1.3/aclocal.m4
+++ /dev/null
@@ -1,8841 +0,0 @@
-# generated automatically by aclocal 1.10.2 -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-m4_ifndef([AC_AUTOCONF_VERSION],
-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63],,
-[m4_warning([this file was generated for autoconf 2.63.
-You have another version of autoconf.  It may work, but is not guaranteed to.
-If you have problems, you may need to regenerate the build system entirely.
-To do so, use the procedure documented by the package, typically `autoreconf'.])])
-
-# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
-#
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008 Free Software Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-m4_define([_LT_COPYING], [dnl
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008 Free Software Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-#   This file is part of GNU Libtool.
-#
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-])
-
-# serial 56 LT_INIT
-
-
-# LT_PREREQ(VERSION)
-# ------------------
-# Complain and exit if this libtool version is less that VERSION.
-m4_defun([LT_PREREQ],
-[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
-       [m4_default([$3],
-		   [m4_fatal([Libtool version $1 or higher is required],
-		             63)])],
-       [$2])])
-
-
-# _LT_CHECK_BUILDDIR
-# ------------------
-# Complain if the absolute build directory name contains unusual characters
-m4_defun([_LT_CHECK_BUILDDIR],
-[case `pwd` in
-  *\ * | *\	*)
-    AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
-esac
-])
-
-
-# LT_INIT([OPTIONS])
-# ------------------
-AC_DEFUN([LT_INIT],
-[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
-AC_BEFORE([$0], [LT_LANG])dnl
-AC_BEFORE([$0], [LT_OUTPUT])dnl
-AC_BEFORE([$0], [LTDL_INIT])dnl
-m4_require([_LT_CHECK_BUILDDIR])dnl
-
-dnl Autoconf doesn't catch unexpanded LT_ macros by default:
-m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
-m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
-dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
-dnl unless we require an AC_DEFUNed macro:
-AC_REQUIRE([LTOPTIONS_VERSION])dnl
-AC_REQUIRE([LTSUGAR_VERSION])dnl
-AC_REQUIRE([LTVERSION_VERSION])dnl
-AC_REQUIRE([LTOBSOLETE_VERSION])dnl
-m4_require([_LT_PROG_LTMAIN])dnl
-
-dnl Parse OPTIONS
-_LT_SET_OPTIONS([$0], [$1])
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-AC_SUBST(LIBTOOL)dnl
-
-_LT_SETUP
-
-# Only expand once:
-m4_define([LT_INIT])
-])# LT_INIT
-
-# Old names:
-AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
-AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
-dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
-
-
-# _LT_CC_BASENAME(CC)
-# -------------------
-# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
-m4_defun([_LT_CC_BASENAME],
-[for cc_temp in $1""; do
-  case $cc_temp in
-    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
-    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
-])
-
-
-# _LT_FILEUTILS_DEFAULTS
-# ----------------------
-# It is okay to use these file commands and assume they have been set
-# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
-m4_defun([_LT_FILEUTILS_DEFAULTS],
-[: ${CP="cp -f"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-])# _LT_FILEUTILS_DEFAULTS
-
-
-# _LT_SETUP
-# ---------
-m4_defun([_LT_SETUP],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-_LT_DECL([], [host_alias], [0], [The host system])dnl
-_LT_DECL([], [host], [0])dnl
-_LT_DECL([], [host_os], [0])dnl
-dnl
-_LT_DECL([], [build_alias], [0], [The build system])dnl
-_LT_DECL([], [build], [0])dnl
-_LT_DECL([], [build_os], [0])dnl
-dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([LT_PATH_LD])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-dnl
-AC_REQUIRE([AC_PROG_LN_S])dnl
-test -z "$LN_S" && LN_S="ln -s"
-_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
-dnl
-AC_REQUIRE([LT_CMD_MAX_LEN])dnl
-_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
-_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
-dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_CHECK_SHELL_FEATURES])dnl
-m4_require([_LT_CMD_RELOAD])dnl
-m4_require([_LT_CHECK_MAGIC_METHOD])dnl
-m4_require([_LT_CMD_OLD_ARCHIVE])dnl
-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
-
-_LT_CONFIG_LIBTOOL_INIT([
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-])
-if test -n "${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-_LT_CHECK_OBJDIR
-
-m4_require([_LT_TAG_COMPILER])dnl
-_LT_PROG_ECHO_BACKSLASH
-
-case $host_os in
-aix3*)
-  # AIX sometimes has problems with the GCC collect2 program.  For some
-  # reason, if we set the COLLECT_NAMES environment variable, the problems
-  # vanish in a puff of smoke.
-  if test "X${COLLECT_NAMES+set}" != Xset; then
-    COLLECT_NAMES=
-    export COLLECT_NAMES
-  fi
-  ;;
-esac
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\([["`\\]]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-
-# Global variables:
-ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a `.a' archive for static linking (except MSVC,
-# which needs '.lib').
-libext=a
-
-with_gnu_ld="$lt_cv_prog_gnu_ld"
-
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
-
-# Set sane defaults for various variables
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$LD" && LD=ld
-test -z "$ac_objext" && ac_objext=o
-
-_LT_CC_BASENAME([$compiler])
-
-# Only perform the check for file, if the check method requires it
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-case $deplibs_check_method in
-file_magic*)
-  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    _LT_PATH_MAGIC
-  fi
-  ;;
-esac
-
-# Use C for the default configuration in the libtool script
-LT_SUPPORTED_TAG([CC])
-_LT_LANG_C_CONFIG
-_LT_LANG_DEFAULT_CONFIG
-_LT_CONFIG_COMMANDS
-])# _LT_SETUP
-
-
-# _LT_PROG_LTMAIN
-# ---------------
-# Note that this code is called both from `configure', and `config.status'
-# now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
-# `config.status' has no value for ac_aux_dir unless we are using Automake,
-# so we pass a copy along to make sure it has a sensible value anyway.
-m4_defun([_LT_PROG_LTMAIN],
-[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
-_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
-ltmain="$ac_aux_dir/ltmain.sh"
-])# _LT_PROG_LTMAIN
-
-
-
-# So that we can recreate a full libtool script including additional
-# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
-# in macros and then make a single call at the end using the `libtool'
-# label.
-
-
-# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
-# ----------------------------------------
-# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
-m4_define([_LT_CONFIG_LIBTOOL_INIT],
-[m4_ifval([$1],
-          [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
-                     [$1
-])])])
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_INIT])
-
-
-# _LT_CONFIG_LIBTOOL([COMMANDS])
-# ------------------------------
-# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
-m4_define([_LT_CONFIG_LIBTOOL],
-[m4_ifval([$1],
-          [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
-                     [$1
-])])])
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
-
-
-# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
-# -----------------------------------------------------
-m4_defun([_LT_CONFIG_SAVE_COMMANDS],
-[_LT_CONFIG_LIBTOOL([$1])
-_LT_CONFIG_LIBTOOL_INIT([$2])
-])
-
-
-# _LT_FORMAT_COMMENT([COMMENT])
-# -----------------------------
-# Add leading comment marks to the start of each line, and a trailing
-# full-stop to the whole comment if one is not present already.
-m4_define([_LT_FORMAT_COMMENT],
-[m4_ifval([$1], [
-m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
-              [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
-)])
-
-
-
-
-
-# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
-# -------------------------------------------------------------------
-# CONFIGNAME is the name given to the value in the libtool script.
-# VARNAME is the (base) name used in the configure script.
-# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
-# VARNAME.  Any other value will be used directly.
-m4_define([_LT_DECL],
-[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
-    [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
-	[m4_ifval([$1], [$1], [$2])])
-    lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
-    m4_ifval([$4],
-	[lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
-    lt_dict_add_subkey([lt_decl_dict], [$2],
-	[tagged?], [m4_ifval([$5], [yes], [no])])])
-])
-
-
-# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
-# --------------------------------------------------------
-m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
-
-
-# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
-# ------------------------------------------------
-m4_define([lt_decl_tag_varnames],
-[_lt_decl_filter([tagged?], [yes], $@)])
-
-
-# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
-# ---------------------------------------------------------
-m4_define([_lt_decl_filter],
-[m4_case([$#],
-  [0], [m4_fatal([$0: too few arguments: $#])],
-  [1], [m4_fatal([$0: too few arguments: $#: $1])],
-  [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
-  [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
-  [lt_dict_filter([lt_decl_dict], $@)])[]dnl
-])
-
-
-# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
-# --------------------------------------------------
-m4_define([lt_decl_quote_varnames],
-[_lt_decl_filter([value], [1], $@)])
-
-
-# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
-# ---------------------------------------------------
-m4_define([lt_decl_dquote_varnames],
-[_lt_decl_filter([value], [2], $@)])
-
-
-# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
-# ---------------------------------------------------
-m4_define([lt_decl_varnames_tagged],
-[m4_assert([$# <= 2])dnl
-_$0(m4_quote(m4_default([$1], [[, ]])),
-    m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
-    m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
-m4_define([_lt_decl_varnames_tagged],
-[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
-
-
-# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
-# ------------------------------------------------
-m4_define([lt_decl_all_varnames],
-[_$0(m4_quote(m4_default([$1], [[, ]])),
-     m4_if([$2], [],
-	   m4_quote(lt_decl_varnames),
-	m4_quote(m4_shift($@))))[]dnl
-])
-m4_define([_lt_decl_all_varnames],
-[lt_join($@, lt_decl_varnames_tagged([$1],
-			lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
-])
-
-
-# _LT_CONFIG_STATUS_DECLARE([VARNAME])
-# ------------------------------------
-# Quote a variable value, and forward it to `config.status' so that its
-# declaration there will have the same value as in `configure'.  VARNAME
-# must have a single quote delimited value for this to work.
-m4_define([_LT_CONFIG_STATUS_DECLARE],
-[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`'])
-
-
-# _LT_CONFIG_STATUS_DECLARATIONS
-# ------------------------------
-# We delimit libtool config variables with single quotes, so when
-# we write them to config.status, we have to be sure to quote all
-# embedded single quotes properly.  In configure, this macro expands
-# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
-#
-#    <var>='`$ECHO "X$<var>" | $Xsed -e "$delay_single_quote_subst"`'
-m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
-[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
-    [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
-
-
-# _LT_LIBTOOL_TAGS
-# ----------------
-# Output comment and list of tags supported by the script
-m4_defun([_LT_LIBTOOL_TAGS],
-[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
-available_tags="_LT_TAGS"dnl
-])
-
-
-# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
-# -----------------------------------
-# Extract the dictionary values for VARNAME (optionally with TAG) and
-# expand to a commented shell variable setting:
-#
-#    # Some comment about what VAR is for.
-#    visible_name=$lt_internal_name
-m4_define([_LT_LIBTOOL_DECLARE],
-[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
-					   [description])))[]dnl
-m4_pushdef([_libtool_name],
-    m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
-m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
-    [0], [_libtool_name=[$]$1],
-    [1], [_libtool_name=$lt_[]$1],
-    [2], [_libtool_name=$lt_[]$1],
-    [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
-m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
-])
-
-
-# _LT_LIBTOOL_CONFIG_VARS
-# -----------------------
-# Produce commented declarations of non-tagged libtool config variables
-# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
-# script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
-# section) are produced by _LT_LIBTOOL_TAG_VARS.
-m4_defun([_LT_LIBTOOL_CONFIG_VARS],
-[m4_foreach([_lt_var],
-    m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
-    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
-
-
-# _LT_LIBTOOL_TAG_VARS(TAG)
-# -------------------------
-m4_define([_LT_LIBTOOL_TAG_VARS],
-[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
-    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
-
-
-# _LT_TAGVAR(VARNAME, [TAGNAME])
-# ------------------------------
-m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
-
-
-# _LT_CONFIG_COMMANDS
-# -------------------
-# Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
-# variables for single and double quote escaping we saved from calls
-# to _LT_DECL, we can put quote escaped variables declarations
-# into `config.status', and then the shell code to quote escape them in
-# for loops in `config.status'.  Finally, any additional code accumulated
-# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
-m4_defun([_LT_CONFIG_COMMANDS],
-[AC_PROVIDE_IFELSE([LT_OUTPUT],
-	dnl If the libtool generation code has been placed in $CONFIG_LT,
-	dnl instead of duplicating it all over again into config.status,
-	dnl then we will have config.status run $CONFIG_LT later, so it
-	dnl needs to know what name is stored there:
-        [AC_CONFIG_COMMANDS([libtool],
-            [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
-    dnl If the libtool generation code is destined for config.status,
-    dnl expand the accumulated commands and init code now:
-    [AC_CONFIG_COMMANDS([libtool],
-        [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
-])#_LT_CONFIG_COMMANDS
-
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
-[
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-sed_quote_subst='$sed_quote_subst'
-double_quote_subst='$double_quote_subst'
-delay_variable_subst='$delay_variable_subst'
-_LT_CONFIG_STATUS_DECLARATIONS
-LTCC='$LTCC'
-LTCFLAGS='$LTCFLAGS'
-compiler='$compiler_DEFAULT'
-
-# Quote evaled strings.
-for var in lt_decl_all_varnames([[ \
-]], lt_decl_quote_varnames); do
-    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
-    *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Double-quote double-evaled strings.
-for var in lt_decl_all_varnames([[ \
-]], lt_decl_dquote_varnames); do
-    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
-    *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Fix-up fallback echo if it was mangled by the above quoting rules.
-case \$lt_ECHO in
-*'\\\[$]0 --fallback-echo"')dnl "
-  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\`
-  ;;
-esac
-
-_LT_OUTPUT_LIBTOOL_INIT
-])
-
-
-# LT_OUTPUT
-# ---------
-# This macro allows early generation of the libtool script (before
-# AC_OUTPUT is called), incase it is used in configure for compilation
-# tests.
-AC_DEFUN([LT_OUTPUT],
-[: ${CONFIG_LT=./config.lt}
-AC_MSG_NOTICE([creating $CONFIG_LT])
-cat >"$CONFIG_LT" <<_LTEOF
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate a libtool stub with the current configuration.
-
-lt_cl_silent=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-_LTEOF
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-AS_SHELL_SANITIZE
-_AS_PREPARE
-
-exec AS_MESSAGE_FD>&1
-exec AS_MESSAGE_LOG_FD>>config.log
-{
-  echo
-  AS_BOX([Running $as_me.])
-} >&AS_MESSAGE_LOG_FD
-
-lt_cl_help="\
-\`$as_me' creates a local libtool stub from the current configuration,
-for use in further configure time tests before the real libtool is
-generated.
-
-Usage: $[0] [[OPTIONS]]
-
-  -h, --help      print this help, then exit
-  -V, --version   print version number, then exit
-  -q, --quiet     do not print progress messages
-  -d, --debug     don't remove temporary files
-
-Report bugs to <bug-libtool@gnu.org>."
-
-lt_cl_version="\
-m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
-m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
-configured by $[0], generated by m4_PACKAGE_STRING.
-
-Copyright (C) 2008 Free Software Foundation, Inc.
-This config.lt script is free software; the Free Software Foundation
-gives unlimited permision to copy, distribute and modify it."
-
-while test $[#] != 0
-do
-  case $[1] in
-    --version | --v* | -V )
-      echo "$lt_cl_version"; exit 0 ;;
-    --help | --h* | -h )
-      echo "$lt_cl_help"; exit 0 ;;
-    --debug | --d* | -d )
-      debug=: ;;
-    --quiet | --q* | --silent | --s* | -q )
-      lt_cl_silent=: ;;
-
-    -*) AC_MSG_ERROR([unrecognized option: $[1]
-Try \`$[0] --help' for more information.]) ;;
-
-    *) AC_MSG_ERROR([unrecognized argument: $[1]
-Try \`$[0] --help' for more information.]) ;;
-  esac
-  shift
-done
-
-if $lt_cl_silent; then
-  exec AS_MESSAGE_FD>/dev/null
-fi
-_LTEOF
-
-cat >>"$CONFIG_LT" <<_LTEOF
-_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
-_LTEOF
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-AC_MSG_NOTICE([creating $ofile])
-_LT_OUTPUT_LIBTOOL_COMMANDS
-AS_EXIT(0)
-_LTEOF
-chmod +x "$CONFIG_LT"
-
-# configure is writing to config.log, but config.lt does its own redirection,
-# appending to config.log, which fails on DOS, as config.log is still kept
-# open by configure.  Here we exec the FD to /dev/null, effectively closing
-# config.log, so it can be properly (re)opened and appended to by config.lt.
-if test "$no_create" != yes; then
-  lt_cl_success=:
-  test "$silent" = yes &&
-    lt_config_lt_args="$lt_config_lt_args --quiet"
-  exec AS_MESSAGE_LOG_FD>/dev/null
-  $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
-  exec AS_MESSAGE_LOG_FD>>config.log
-  $lt_cl_success || AS_EXIT(1)
-fi
-])# LT_OUTPUT
-
-
-# _LT_CONFIG(TAG)
-# ---------------
-# If TAG is the built-in tag, create an initial libtool script with a
-# default configuration from the untagged config vars.  Otherwise add code
-# to config.status for appending the configuration named by TAG from the
-# matching tagged config vars.
-m4_defun([_LT_CONFIG],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-_LT_CONFIG_SAVE_COMMANDS([
-  m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
-  m4_if(_LT_TAG, [C], [
-    # See if we are running on zsh, and set the options which allow our
-    # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}" ; then
-      setopt NO_GLOB_SUBST
-    fi
-
-    cfgfile="${ofile}T"
-    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
-    $RM "$cfgfile"
-
-    cat <<_LT_EOF >> "$cfgfile"
-#! $SHELL
-
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
-_LT_COPYING
-_LT_LIBTOOL_TAGS
-
-# ### BEGIN LIBTOOL CONFIG
-_LT_LIBTOOL_CONFIG_VARS
-_LT_LIBTOOL_TAG_VARS
-# ### END LIBTOOL CONFIG
-
-_LT_EOF
-
-  case $host_os in
-  aix3*)
-    cat <<\_LT_EOF >> "$cfgfile"
-# AIX sometimes has problems with the GCC collect2 program.  For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
-  COLLECT_NAMES=
-  export COLLECT_NAMES
-fi
-_LT_EOF
-    ;;
-  esac
-
-  _LT_PROG_LTMAIN
-
-  # We use sed instead of cat because bash on DJGPP gets confused if
-  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-  # text mode, it properly converts lines to CR/LF.  This bash problem
-  # is reportedly fixed, but why not run on old versions too?
-  sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
-    || (rm -f "$cfgfile"; exit 1)
-
-  _LT_PROG_XSI_SHELLFNS
-
-  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
-    || (rm -f "$cfgfile"; exit 1)
-
-  mv -f "$cfgfile" "$ofile" ||
-    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-  chmod +x "$ofile"
-],
-[cat <<_LT_EOF >> "$ofile"
-
-dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
-dnl in a comment (ie after a #).
-# ### BEGIN LIBTOOL TAG CONFIG: $1
-_LT_LIBTOOL_TAG_VARS(_LT_TAG)
-# ### END LIBTOOL TAG CONFIG: $1
-_LT_EOF
-])dnl /m4_if
-],
-[m4_if([$1], [], [
-    PACKAGE='$PACKAGE'
-    VERSION='$VERSION'
-    TIMESTAMP='$TIMESTAMP'
-    RM='$RM'
-    ofile='$ofile'], [])
-])dnl /_LT_CONFIG_SAVE_COMMANDS
-])# _LT_CONFIG
-
-
-# LT_SUPPORTED_TAG(TAG)
-# ---------------------
-# Trace this macro to discover what tags are supported by the libtool
-# --tag option, using:
-#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
-AC_DEFUN([LT_SUPPORTED_TAG], [])
-
-
-# C support is built-in for now
-m4_define([_LT_LANG_C_enabled], [])
-m4_define([_LT_TAGS], [])
-
-
-# LT_LANG(LANG)
-# -------------
-# Enable libtool support for the given language if not already enabled.
-AC_DEFUN([LT_LANG],
-[AC_BEFORE([$0], [LT_OUTPUT])dnl
-m4_case([$1],
-  [C],			[_LT_LANG(C)],
-  [C++],		[_LT_LANG(CXX)],
-  [Java],		[_LT_LANG(GCJ)],
-  [Fortran 77],		[_LT_LANG(F77)],
-  [Fortran],		[_LT_LANG(FC)],
-  [Windows Resource],	[_LT_LANG(RC)],
-  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
-    [_LT_LANG($1)],
-    [m4_fatal([$0: unsupported language: "$1"])])])dnl
-])# LT_LANG
-
-
-# _LT_LANG(LANGNAME)
-# ------------------
-m4_defun([_LT_LANG],
-[m4_ifdef([_LT_LANG_]$1[_enabled], [],
-  [LT_SUPPORTED_TAG([$1])dnl
-  m4_append([_LT_TAGS], [$1 ])dnl
-  m4_define([_LT_LANG_]$1[_enabled], [])dnl
-  _LT_LANG_$1_CONFIG($1)])dnl
-])# _LT_LANG
-
-
-# _LT_LANG_DEFAULT_CONFIG
-# -----------------------
-m4_defun([_LT_LANG_DEFAULT_CONFIG],
-[AC_PROVIDE_IFELSE([AC_PROG_CXX],
-  [LT_LANG(CXX)],
-  [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
-
-AC_PROVIDE_IFELSE([AC_PROG_F77],
-  [LT_LANG(F77)],
-  [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
-
-AC_PROVIDE_IFELSE([AC_PROG_FC],
-  [LT_LANG(FC)],
-  [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
-
-dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
-dnl pulling things in needlessly.
-AC_PROVIDE_IFELSE([AC_PROG_GCJ],
-  [LT_LANG(GCJ)],
-  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
-    [LT_LANG(GCJ)],
-    [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
-      [LT_LANG(GCJ)],
-      [m4_ifdef([AC_PROG_GCJ],
-	[m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
-       m4_ifdef([A][M_PROG_GCJ],
-	[m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
-       m4_ifdef([LT_PROG_GCJ],
-	[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
-
-AC_PROVIDE_IFELSE([LT_PROG_RC],
-  [LT_LANG(RC)],
-  [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
-])# _LT_LANG_DEFAULT_CONFIG
-
-# Obsolete macros:
-AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
-AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
-AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
-AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
-dnl AC_DEFUN([AC_LIBTOOL_F77], [])
-dnl AC_DEFUN([AC_LIBTOOL_FC], [])
-dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
-
-
-# _LT_TAG_COMPILER
-# ----------------
-m4_defun([_LT_TAG_COMPILER],
-[AC_REQUIRE([AC_PROG_CC])dnl
-
-_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
-_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
-_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
-_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-])# _LT_TAG_COMPILER
-
-
-# _LT_COMPILER_BOILERPLATE
-# ------------------------
-# Check for compiler boilerplate output or warnings with
-# the simple compiler test code.
-m4_defun([_LT_COMPILER_BOILERPLATE],
-[m4_require([_LT_DECL_SED])dnl
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-])# _LT_COMPILER_BOILERPLATE
-
-
-# _LT_LINKER_BOILERPLATE
-# ----------------------
-# Check for linker boilerplate output or warnings with
-# the simple link test code.
-m4_defun([_LT_LINKER_BOILERPLATE],
-[m4_require([_LT_DECL_SED])dnl
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-])# _LT_LINKER_BOILERPLATE
-
-# _LT_REQUIRED_DARWIN_CHECKS
-# -------------------------
-m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
-  case $host_os in
-    rhapsody* | darwin*)
-    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
-    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
-    AC_CHECK_TOOL([LIPO], [lipo], [:])
-    AC_CHECK_TOOL([OTOOL], [otool], [:])
-    AC_CHECK_TOOL([OTOOL64], [otool64], [:])
-    _LT_DECL([], [DSYMUTIL], [1],
-      [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
-    _LT_DECL([], [NMEDIT], [1],
-      [Tool to change global to local symbols on Mac OS X])
-    _LT_DECL([], [LIPO], [1],
-      [Tool to manipulate fat objects and archives on Mac OS X])
-    _LT_DECL([], [OTOOL], [1],
-      [ldd/readelf like tool for Mach-O binaries on Mac OS X])
-    _LT_DECL([], [OTOOL64], [1],
-      [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
-
-    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
-      [lt_cv_apple_cc_single_mod=no
-      if test -z "${LT_MULTI_MODULE}"; then
-	# By default we will add the -single_module flag. You can override
-	# by either setting the environment variable LT_MULTI_MODULE
-	# non-empty at configure time, or by adding -multi_module to the
-	# link flags.
-	rm -rf libconftest.dylib*
-	echo "int foo(void){return 1;}" > conftest.c
-	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
-	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
-        _lt_result=$?
-	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
-	  lt_cv_apple_cc_single_mod=yes
-	else
-	  cat conftest.err >&AS_MESSAGE_LOG_FD
-	fi
-	rm -rf libconftest.dylib*
-	rm -f conftest.*
-      fi])
-    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
-      [lt_cv_ld_exported_symbols_list],
-      [lt_cv_ld_exported_symbols_list=no
-      save_LDFLAGS=$LDFLAGS
-      echo "_main" > conftest.sym
-      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
-	[lt_cv_ld_exported_symbols_list=yes],
-	[lt_cv_ld_exported_symbols_list=no])
-	LDFLAGS="$save_LDFLAGS"
-    ])
-    case $host_os in
-    rhapsody* | darwin1.[[012]])
-      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
-    darwin1.*)
-      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-    darwin*) # darwin 5.x on
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-	10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-	10.[[012]]*)
-	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-	10.*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-      esac
-    ;;
-  esac
-    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
-      _lt_dar_single_mod='$single_module'
-    fi
-    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
-      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
-    else
-      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
-    fi
-    if test "$DSYMUTIL" != ":"; then
-      _lt_dsymutil='~$DSYMUTIL $lib || :'
-    else
-      _lt_dsymutil=
-    fi
-    ;;
-  esac
-])
-
-
-# _LT_DARWIN_LINKER_FEATURES
-# --------------------------
-# Checks for linker and compiler features on darwin
-m4_defun([_LT_DARWIN_LINKER_FEATURES],
-[
-  m4_require([_LT_REQUIRED_DARWIN_CHECKS])
-  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-  _LT_TAGVAR(hardcode_direct, $1)=no
-  _LT_TAGVAR(hardcode_automatic, $1)=yes
-  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-  _LT_TAGVAR(whole_archive_flag_spec, $1)=''
-  _LT_TAGVAR(link_all_deplibs, $1)=yes
-  _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=echo
-    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-    m4_if([$1], [CXX],
-[   if test "$lt_cv_apple_cc_single_mod" != "yes"; then
-      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
-      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
-    fi
-],[])
-  else
-  _LT_TAGVAR(ld_shlibs, $1)=no
-  fi
-])
-
-# _LT_SYS_MODULE_PATH_AIX
-# -----------------------
-# Links a minimal program and checks the executable
-# for the system default hardcoded library path. In most cases,
-# this is /usr/lib:/lib, but when the MPI compilers are used
-# the location of the communication and MPI libs are included too.
-# If we don't find anything, use the default library path according
-# to the aix ld manual.
-m4_defun([_LT_SYS_MODULE_PATH_AIX],
-[m4_require([_LT_DECL_SED])dnl
-AC_LINK_IFELSE(AC_LANG_PROGRAM,[
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-	/^0/ {
-	    s/^0  *\(.*\)$/\1/
-	    p
-	}
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi],[])
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-])# _LT_SYS_MODULE_PATH_AIX
-
-
-# _LT_SHELL_INIT(ARG)
-# -------------------
-m4_define([_LT_SHELL_INIT],
-[ifdef([AC_DIVERSION_NOTICE],
-	     [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
-	 [AC_DIVERT_PUSH(NOTICE)])
-$1
-AC_DIVERT_POP
-])# _LT_SHELL_INIT
-
-
-# _LT_PROG_ECHO_BACKSLASH
-# -----------------------
-# Add some code to the start of the generated configure script which
-# will find an echo command which doesn't interpret backslashes.
-m4_defun([_LT_PROG_ECHO_BACKSLASH],
-[_LT_SHELL_INIT([
-# Check that we are running under the correct shell.
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-case X$lt_ECHO in
-X*--fallback-echo)
-  # Remove one level of quotation (which was required for Make).
-  ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
-  ;;
-esac
-
-ECHO=${lt_ECHO-echo}
-if test "X[$]1" = X--no-reexec; then
-  # Discard the --no-reexec flag, and continue.
-  shift
-elif test "X[$]1" = X--fallback-echo; then
-  # Avoid inline document here, it may be left over
-  :
-elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
-  # Yippee, $ECHO works!
-  :
-else
-  # Restart under the correct shell.
-  exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
-fi
-
-if test "X[$]1" = X--fallback-echo; then
-  # used as fallback echo
-  shift
-  cat <<_LT_EOF
-[$]*
-_LT_EOF
-  exit 0
-fi
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-if test -z "$lt_ECHO"; then
-  if test "X${echo_test_string+set}" != Xset; then
-    # find a string as large as possible, as long as the shell can cope with it
-    for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
-      # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
-      if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
-	 { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
-      then
-        break
-      fi
-    done
-  fi
-
-  if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
-     echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
-     test "X$echo_testing_string" = "X$echo_test_string"; then
-    :
-  else
-    # The Solaris, AIX, and Digital Unix default echo programs unquote
-    # backslashes.  This makes it impossible to quote backslashes using
-    #   echo "$something" | sed 's/\\/\\\\/g'
-    #
-    # So, first we look for a working echo in the user's PATH.
-
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for dir in $PATH /usr/ucb; do
-      IFS="$lt_save_ifs"
-      if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
-         test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
-         echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
-         test "X$echo_testing_string" = "X$echo_test_string"; then
-        ECHO="$dir/echo"
-        break
-      fi
-    done
-    IFS="$lt_save_ifs"
-
-    if test "X$ECHO" = Xecho; then
-      # We didn't find a better echo, so look for alternatives.
-      if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
-         echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
-         test "X$echo_testing_string" = "X$echo_test_string"; then
-        # This shell has a builtin print -r that does the trick.
-        ECHO='print -r'
-      elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
-	   test "X$CONFIG_SHELL" != X/bin/ksh; then
-        # If we have ksh, try running configure again with it.
-        ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
-        export ORIGINAL_CONFIG_SHELL
-        CONFIG_SHELL=/bin/ksh
-        export CONFIG_SHELL
-        exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
-      else
-        # Try using printf.
-        ECHO='printf %s\n'
-        if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
-	   echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
-	   test "X$echo_testing_string" = "X$echo_test_string"; then
-	  # Cool, printf works
-	  :
-        elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
-	     test "X$echo_testing_string" = 'X\t' &&
-	     echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-	     test "X$echo_testing_string" = "X$echo_test_string"; then
-	  CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
-	  export CONFIG_SHELL
-	  SHELL="$CONFIG_SHELL"
-	  export SHELL
-	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
-        elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
-	     test "X$echo_testing_string" = 'X\t' &&
-	     echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-	     test "X$echo_testing_string" = "X$echo_test_string"; then
-	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
-        else
-	  # maybe with a smaller string...
-	  prev=:
-
-	  for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
-	    if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
-	    then
-	      break
-	    fi
-	    prev="$cmd"
-	  done
-
-	  if test "$prev" != 'sed 50q "[$]0"'; then
-	    echo_test_string=`eval $prev`
-	    export echo_test_string
-	    exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
-	  else
-	    # Oops.  We lost completely, so just stick with echo.
-	    ECHO=echo
-	  fi
-        fi
-      fi
-    fi
-  fi
-fi
-
-# Copy echo and quote the copy suitably for passing to libtool from
-# the Makefile, instead of quoting the original, which is used later.
-lt_ECHO=$ECHO
-if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
-   lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
-fi
-
-AC_SUBST(lt_ECHO)
-])
-_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
-_LT_DECL([], [ECHO], [1],
-    [An echo program that does not interpret backslashes])
-])# _LT_PROG_ECHO_BACKSLASH
-
-
-# _LT_ENABLE_LOCK
-# ---------------
-m4_defun([_LT_ENABLE_LOCK],
-[AC_ARG_ENABLE([libtool-lock],
-  [AS_HELP_STRING([--disable-libtool-lock],
-    [avoid locking (might break parallel builds)])])
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.$ac_objext` in
-      *ELF-32*)
-	HPUX_IA64_MODE="32"
-	;;
-      *ELF-64*)
-	HPUX_IA64_MODE="64"
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-*-*-irix6*)
-  # Find out which ABI we are using.
-  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    if test "$lt_cv_prog_gnu_ld" = yes; then
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -melf32bsmip"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -melf32bmipn32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -melf64bmip"
-	;;
-      esac
-    else
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -32"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -n32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -64"
-	  ;;
-      esac
-    fi
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.o` in
-      *32-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_i386_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_i386"
-	    ;;
-	  ppc64-*linux*|powerpc64-*linux*)
-	    LD="${LD-ld} -m elf32ppclinux"
-	    ;;
-	  s390x-*linux*)
-	    LD="${LD-ld} -m elf_s390"
-	    ;;
-	  sparc64-*linux*)
-	    LD="${LD-ld} -m elf32_sparc"
-	    ;;
-	esac
-	;;
-      *64-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_x86_64_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_x86_64"
-	    ;;
-	  ppc*-*linux*|powerpc*-*linux*)
-	    LD="${LD-ld} -m elf64ppc"
-	    ;;
-	  s390*-*linux*|s390*-*tpf*)
-	    LD="${LD-ld} -m elf64_s390"
-	    ;;
-	  sparc*-*linux*)
-	    LD="${LD-ld} -m elf64_sparc"
-	    ;;
-	esac
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -belf"
-  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
-    [AC_LANG_PUSH(C)
-     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
-     AC_LANG_POP])
-  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS="$SAVE_CFLAGS"
-  fi
-  ;;
-sparc*-*solaris*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.o` in
-    *64-bit*)
-      case $lt_cv_prog_gnu_ld in
-      yes*) LD="${LD-ld} -m elf64_sparc" ;;
-      *)
-	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
-	  LD="${LD-ld} -64"
-	fi
-	;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-esac
-
-need_locks="$enable_libtool_lock"
-])# _LT_ENABLE_LOCK
-
-
-# _LT_CMD_OLD_ARCHIVE
-# -------------------
-m4_defun([_LT_CMD_OLD_ARCHIVE],
-[AC_CHECK_TOOL(AR, ar, false)
-test -z "$AR" && AR=ar
-test -z "$AR_FLAGS" && AR_FLAGS=cru
-_LT_DECL([], [AR], [1], [The archiver])
-_LT_DECL([], [AR_FLAGS], [1])
-
-AC_CHECK_TOOL(STRIP, strip, :)
-test -z "$STRIP" && STRIP=:
-_LT_DECL([], [STRIP], [1], [A symbol stripping program])
-
-AC_CHECK_TOOL(RANLIB, ranlib, :)
-test -z "$RANLIB" && RANLIB=:
-_LT_DECL([], [RANLIB], [1],
-    [Commands used to install an old-style archive])
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
-  case $host_os in
-  openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
-fi
-_LT_DECL([], [old_postinstall_cmds], [2])
-_LT_DECL([], [old_postuninstall_cmds], [2])
-_LT_TAGDECL([], [old_archive_cmds], [2],
-    [Commands used to build an old-style archive])
-])# _LT_CMD_OLD_ARCHIVE
-
-
-# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
-# ----------------------------------------------------------------
-# Check whether the given compiler option works
-AC_DEFUN([_LT_COMPILER_OPTION],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_CACHE_CHECK([$1], [$2],
-  [$2=no
-   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$3"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       $2=yes
-     fi
-   fi
-   $RM conftest*
-])
-
-if test x"[$]$2" = xyes; then
-    m4_if([$5], , :, [$5])
-else
-    m4_if([$6], , :, [$6])
-fi
-])# _LT_COMPILER_OPTION
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
-
-
-# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-#                  [ACTION-SUCCESS], [ACTION-FAILURE])
-# ----------------------------------------------------
-# Check whether the given linker option works
-AC_DEFUN([_LT_LINKER_OPTION],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_CACHE_CHECK([$1], [$2],
-  [$2=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $3"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&AS_MESSAGE_LOG_FD
-       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         $2=yes
-       fi
-     else
-       $2=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-])
-
-if test x"[$]$2" = xyes; then
-    m4_if([$4], , :, [$4])
-else
-    m4_if([$5], , :, [$5])
-fi
-])# _LT_LINKER_OPTION
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
-
-
-# LT_CMD_MAX_LEN
-#---------------
-AC_DEFUN([LT_CMD_MAX_LEN],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-# find the maximum length of command line arguments
-AC_MSG_CHECKING([the maximum length of command line arguments])
-AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
-  i=0
-  teststring="ABCD"
-
-  case $build_os in
-  msdosdjgpp*)
-    # On DJGPP, this test can blow up pretty badly due to problems in libc
-    # (any single argument exceeding 2000 bytes causes a buffer overrun
-    # during glob expansion).  Even if it were fixed, the result of this
-    # check would be larger than it should be.
-    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
-    ;;
-
-  gnu*)
-    # Under GNU Hurd, this test is not required because there is
-    # no limit to the length of command line arguments.
-    # Libtool will interpret -1 as no limit whatsoever
-    lt_cv_sys_max_cmd_len=-1;
-    ;;
-
-  cygwin* | mingw* | cegcc*)
-    # On Win9x/ME, this test blows up -- it succeeds, but takes
-    # about 5 minutes as the teststring grows exponentially.
-    # Worse, since 9x/ME are not pre-emptively multitasking,
-    # you end up with a "frozen" computer, even though with patience
-    # the test eventually succeeds (with a max line length of 256k).
-    # Instead, let's just punt: use the minimum linelength reported by
-    # all of the supported platforms: 8192 (on NT/2K/XP).
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  amigaos*)
-    # On AmigaOS with pdksh, this test takes hours, literally.
-    # So we just punt and use a minimum line length of 8192.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
-    # This has been around since 386BSD, at least.  Likely further.
-    if test -x /sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-    elif test -x /usr/sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-    else
-      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
-    fi
-    # And add a safety zone
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    ;;
-
-  interix*)
-    # We know the value 262144 and hardcode it with a safety zone (like BSD)
-    lt_cv_sys_max_cmd_len=196608
-    ;;
-
-  osf*)
-    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-    # nice to cause kernel panics so lets avoid the loop below.
-    # First set a reasonable default.
-    lt_cv_sys_max_cmd_len=16384
-    #
-    if test -x /sbin/sysconfig; then
-      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-        *1*) lt_cv_sys_max_cmd_len=-1 ;;
-      esac
-    fi
-    ;;
-  sco3.2v5*)
-    lt_cv_sys_max_cmd_len=102400
-    ;;
-  sysv5* | sco5v6* | sysv4.2uw2*)
-    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
-    if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[	 ]]//'`
-    else
-      lt_cv_sys_max_cmd_len=32768
-    fi
-    ;;
-  *)
-    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    else
-      # Make teststring a little bigger before we do anything with it.
-      # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8 ; do
-        teststring=$teststring$teststring
-      done
-      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-      # If test is not a shell built-in, we'll probably end up computing a
-      # maximum length that is only half of the actual maximum length, but
-      # we can't tell.
-      while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
-	         = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
-	      test $i != 17 # 1/2 MB should be enough
-      do
-        i=`expr $i + 1`
-        teststring=$teststring$teststring
-      done
-      # Only check the string length outside the loop.
-      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-      teststring=
-      # Add a significant safety factor because C++ compilers can tack on
-      # massive amounts of additional arguments before passing them to the
-      # linker.  It appears as though 1/2 is a usable value.
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-    fi
-    ;;
-  esac
-])
-if test -n $lt_cv_sys_max_cmd_len ; then
-  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
-else
-  AC_MSG_RESULT(none)
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-_LT_DECL([], [max_cmd_len], [0],
-    [What is the maximum length of a command?])
-])# LT_CMD_MAX_LEN
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
-
-
-# _LT_HEADER_DLFCN
-# ----------------
-m4_defun([_LT_HEADER_DLFCN],
-[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
-])# _LT_HEADER_DLFCN
-
-
-# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
-#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
-# ----------------------------------------------------------------
-m4_defun([_LT_TRY_DLOPEN_SELF],
-[m4_require([_LT_HEADER_DLFCN])dnl
-if test "$cross_compiling" = yes; then :
-  [$4]
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-[#line __oline__ "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-void fnord() { int i=42;}
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}]
-_LT_EOF
-  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) $1 ;;
-      x$lt_dlneed_uscore) $2 ;;
-      x$lt_dlunknown|x*) $3 ;;
-    esac
-  else :
-    # compilation failed
-    $3
-  fi
-fi
-rm -fr conftest*
-])# _LT_TRY_DLOPEN_SELF
-
-
-# LT_SYS_DLOPEN_SELF
-# ------------------
-AC_DEFUN([LT_SYS_DLOPEN_SELF],
-[m4_require([_LT_HEADER_DLFCN])dnl
-if test "x$enable_dlopen" != xyes; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
-
-  case $host_os in
-  beos*)
-    lt_cv_dlopen="load_add_on"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
-
-  mingw* | pw32* | cegcc*)
-    lt_cv_dlopen="LoadLibrary"
-    lt_cv_dlopen_libs=
-    ;;
-
-  cygwin*)
-    lt_cv_dlopen="dlopen"
-    lt_cv_dlopen_libs=
-    ;;
-
-  darwin*)
-  # if libdl is installed we need to link against it
-    AC_CHECK_LIB([dl], [dlopen],
-		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
-    lt_cv_dlopen="dyld"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ])
-    ;;
-
-  *)
-    AC_CHECK_FUNC([shl_load],
-	  [lt_cv_dlopen="shl_load"],
-      [AC_CHECK_LIB([dld], [shl_load],
-	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
-	[AC_CHECK_FUNC([dlopen],
-	      [lt_cv_dlopen="dlopen"],
-	  [AC_CHECK_LIB([dl], [dlopen],
-		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
-	    [AC_CHECK_LIB([svld], [dlopen],
-		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
-	      [AC_CHECK_LIB([dld], [dld_link],
-		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
-	      ])
-	    ])
-	  ])
-	])
-      ])
-    ;;
-  esac
-
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
-  else
-    enable_dlopen=no
-  fi
-
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
-    save_LDFLAGS="$LDFLAGS"
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
-    save_LIBS="$LIBS"
-    LIBS="$lt_cv_dlopen_libs $LIBS"
-
-    AC_CACHE_CHECK([whether a program can dlopen itself],
-	  lt_cv_dlopen_self, [dnl
-	  _LT_TRY_DLOPEN_SELF(
-	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
-	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
-    ])
-
-    if test "x$lt_cv_dlopen_self" = xyes; then
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
-	  lt_cv_dlopen_self_static, [dnl
-	  _LT_TRY_DLOPEN_SELF(
-	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
-	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
-      ])
-    fi
-
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
-    ;;
-  esac
-
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
-
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
-_LT_DECL([dlopen_support], [enable_dlopen], [0],
-	 [Whether dlopen is supported])
-_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
-	 [Whether dlopen of programs is supported])
-_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
-	 [Whether dlopen of statically linked programs is supported])
-])# LT_SYS_DLOPEN_SELF
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
-
-
-# _LT_COMPILER_C_O([TAGNAME])
-# ---------------------------
-# Check to see if options -c and -o are simultaneously supported by compiler.
-# This macro does not hard code the compiler like AC_PROG_CC_C_O.
-m4_defun([_LT_COMPILER_C_O],
-[m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
-  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
-  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-     fi
-   fi
-   chmod u+w . 2>&AS_MESSAGE_LOG_FD
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-])
-_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
-	[Does compiler simultaneously support -c and -o options?])
-])# _LT_COMPILER_C_O
-
-
-# _LT_COMPILER_FILE_LOCKS([TAGNAME])
-# ----------------------------------
-# Check to see if we can do hard links to lock some files if needed
-m4_defun([_LT_COMPILER_FILE_LOCKS],
-[m4_require([_LT_ENABLE_LOCK])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-_LT_COMPILER_C_O([$1])
-
-hard_links="nottested"
-if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  AC_MSG_CHECKING([if we can lock with hard links])
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  AC_MSG_RESULT([$hard_links])
-  if test "$hard_links" = no; then
-    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
-])# _LT_COMPILER_FILE_LOCKS
-
-
-# _LT_CHECK_OBJDIR
-# ----------------
-m4_defun([_LT_CHECK_OBJDIR],
-[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
-[rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
-  lt_cv_objdir=.libs
-else
-  # MS-DOS does not allow filenames that begin with a dot.
-  lt_cv_objdir=_libs
-fi
-rmdir .libs 2>/dev/null])
-objdir=$lt_cv_objdir
-_LT_DECL([], [objdir], [0],
-         [The name of the directory that contains temporary libtool files])dnl
-m4_pattern_allow([LT_OBJDIR])dnl
-AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
-  [Define to the sub-directory in which libtool stores uninstalled libraries.])
-])# _LT_CHECK_OBJDIR
-
-
-# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
-# --------------------------------------
-# Check hardcoding attributes.
-m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
-[AC_MSG_CHECKING([how to hardcode library paths into programs])
-_LT_TAGVAR(hardcode_action, $1)=
-if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
-   test -n "$_LT_TAGVAR(runpath_var, $1)" ||
-   test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
-     test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
-    # Linking always hardcodes the temporary library directory.
-    _LT_TAGVAR(hardcode_action, $1)=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    _LT_TAGVAR(hardcode_action, $1)=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  _LT_TAGVAR(hardcode_action, $1)=unsupported
-fi
-AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
-
-if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
-   test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-_LT_TAGDECL([], [hardcode_action], [0],
-    [How to hardcode a shared library path into an executable])
-])# _LT_LINKER_HARDCODE_LIBPATH
-
-
-# _LT_CMD_STRIPLIB
-# ----------------
-m4_defun([_LT_CMD_STRIPLIB],
-[m4_require([_LT_DECL_EGREP])
-striplib=
-old_striplib=
-AC_MSG_CHECKING([whether stripping libraries is possible])
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  AC_MSG_RESULT([yes])
-else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-  darwin*)
-    if test -n "$STRIP" ; then
-      striplib="$STRIP -x"
-      old_striplib="$STRIP -S"
-      AC_MSG_RESULT([yes])
-    else
-      AC_MSG_RESULT([no])
-    fi
-    ;;
-  *)
-    AC_MSG_RESULT([no])
-    ;;
-  esac
-fi
-_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
-_LT_DECL([], [striplib], [1])
-])# _LT_CMD_STRIPLIB
-
-
-# _LT_SYS_DYNAMIC_LINKER([TAG])
-# -----------------------------
-# PORTME Fill in your ld.so characteristics
-m4_defun([_LT_SYS_DYNAMIC_LINKER],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_OBJDUMP])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_MSG_CHECKING([dynamic linker characteristics])
-m4_if([$1],
-	[], [
-if test "$GCC" = yes; then
-  case $host_os in
-    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
-    *) lt_awk_arg="/^libraries:/" ;;
-  esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-  if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
-  else
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-  fi
-  # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary.
-  lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
-  for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
-    else
-      test -d "$lt_sys_path" && \
-	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
-    fi
-  done
-  lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
-BEGIN {RS=" "; FS="/|\n";} {
-  lt_foo="";
-  lt_count=0;
-  for (lt_i = NF; lt_i > 0; lt_i--) {
-    if ($lt_i != "" && $lt_i != ".") {
-      if ($lt_i == "..") {
-        lt_count++;
-      } else {
-        if (lt_count == 0) {
-          lt_foo="/" $lt_i lt_foo;
-        } else {
-          lt_count--;
-        }
-      }
-    }
-  }
-  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
-  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
-}'`
-  sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi])
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[[4-9]]*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[[01]] | aix4.[[01]].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[[45]]*)
-  version_type=linux
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$host_os in
-  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
-        # It is most probably a Windows format PATH printed by
-        # mingw gcc, but we are running on Cygwin. Gcc prints its search
-        # path with ; separators, and with drive letters. We can handle the
-        # drive letters (cygwin fileutils understands them), so leave them,
-        # especially as we might pass files found there to a mingw objdump,
-        # which wouldn't understand a cygwinified path. Ahh.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    ;;
-
-  *)
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    ;;
-  esac
-  dynamic_linker='Win32 ld.exe'
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-m4_if([$1], [],[
-  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[[123]]*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
-  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555.
-  postinstall_cmds='chmod 555 $lib'
-  ;;
-
-interix[[3-9]]*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  # Some binutils ld are patched to set DT_RUNPATH
-  save_LDFLAGS=$LDFLAGS
-  save_libdir=$libdir
-  eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
-       LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
-  AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
-    [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
-       [shlibpath_overrides_runpath=yes])])
-  LDFLAGS=$save_LDFLAGS
-  libdir=$save_libdir
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsdelf*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='NetBSD ld.elf_so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[[89]] | openbsd2.[[89]].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-AC_MSG_RESULT([$dynamic_linker])
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-_LT_DECL([], [variables_saved_for_relink], [1],
-    [Variables whose values should be saved in libtool wrapper scripts and
-    restored at link time])
-_LT_DECL([], [need_lib_prefix], [0],
-    [Do we need the "lib" prefix for modules?])
-_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
-_LT_DECL([], [version_type], [0], [Library versioning type])
-_LT_DECL([], [runpath_var], [0],  [Shared library runtime path variable])
-_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
-_LT_DECL([], [shlibpath_overrides_runpath], [0],
-    [Is shlibpath searched before the hard-coded library search path?])
-_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
-_LT_DECL([], [library_names_spec], [1],
-    [[List of archive names.  First name is the real one, the rest are links.
-    The last name is the one that the linker finds with -lNAME]])
-_LT_DECL([], [soname_spec], [1],
-    [[The coded name of the library, if different from the real name]])
-_LT_DECL([], [postinstall_cmds], [2],
-    [Command to use after installation of a shared archive])
-_LT_DECL([], [postuninstall_cmds], [2],
-    [Command to use after uninstallation of a shared archive])
-_LT_DECL([], [finish_cmds], [2],
-    [Commands used to finish a libtool library installation in a directory])
-_LT_DECL([], [finish_eval], [1],
-    [[As "finish_cmds", except a single script fragment to be evaled but
-    not shown]])
-_LT_DECL([], [hardcode_into_libs], [0],
-    [Whether we should hardcode library paths into libraries])
-_LT_DECL([], [sys_lib_search_path_spec], [2],
-    [Compile-time system search path for libraries])
-_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
-    [Run-time system search path for libraries])
-])# _LT_SYS_DYNAMIC_LINKER
-
-
-# _LT_PATH_TOOL_PREFIX(TOOL)
-# --------------------------
-# find a file program which can recognize shared library
-AC_DEFUN([_LT_PATH_TOOL_PREFIX],
-[m4_require([_LT_DECL_EGREP])dnl
-AC_MSG_CHECKING([for $1])
-AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
-[case $MAGIC_CMD in
-[[\\/*] |  ?:[\\/]*])
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-dnl $ac_dummy forces splitting on constant user-supplied paths.
-dnl POSIX.2 word splitting is done only on the output of word expansions,
-dnl not every word.  This closes a longstanding sh security hole.
-  ac_dummy="m4_if([$2], , $PATH, [$2])"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$1; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-_LT_EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac])
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  AC_MSG_RESULT($MAGIC_CMD)
-else
-  AC_MSG_RESULT(no)
-fi
-_LT_DECL([], [MAGIC_CMD], [0],
-	 [Used to examine libraries when file_magic_cmd begins with "file"])dnl
-])# _LT_PATH_TOOL_PREFIX
-
-# Old name:
-AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
-
-
-# _LT_PATH_MAGIC
-# --------------
-# find a file program which can recognize a shared library
-m4_defun([_LT_PATH_MAGIC],
-[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
-if test -z "$lt_cv_path_MAGIC_CMD"; then
-  if test -n "$ac_tool_prefix"; then
-    _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
-  else
-    MAGIC_CMD=:
-  fi
-fi
-])# _LT_PATH_MAGIC
-
-
-# LT_PATH_LD
-# ----------
-# find the pathname to the GNU or non-GNU linker
-AC_DEFUN([LT_PATH_LD],
-[AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_DECL_EGREP])dnl
-
-AC_ARG_WITH([gnu-ld],
-    [AS_HELP_STRING([--with-gnu-ld],
-	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
-    [test "$withval" = no || with_gnu_ld=yes],
-    [with_gnu_ld=no])dnl
-
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  AC_MSG_CHECKING([for ld used by $CC])
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [[\\/]]* | ?:[[\\/]]*)
-      re_direlt='/[[^/]][[^/]]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  AC_MSG_CHECKING([for GNU ld])
-else
-  AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL(lt_cv_path_LD,
-[if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
-	;;
-      *)
-	test "$with_gnu_ld" != yes && break
-	;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
-else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  AC_MSG_RESULT($LD)
-else
-  AC_MSG_RESULT(no)
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-_LT_PATH_LD_GNU
-AC_SUBST([LD])
-
-_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
-])# LT_PATH_LD
-
-# Old names:
-AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
-AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_PROG_LD], [])
-dnl AC_DEFUN([AC_PROG_LD], [])
-
-
-# _LT_PATH_LD_GNU
-#- --------------
-m4_defun([_LT_PATH_LD_GNU],
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
-[# I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac])
-with_gnu_ld=$lt_cv_prog_gnu_ld
-])# _LT_PATH_LD_GNU
-
-
-# _LT_CMD_RELOAD
-# --------------
-# find reload flag for linker
-#   -- PORTME Some linkers may need a different reload flag.
-m4_defun([_LT_CMD_RELOAD],
-[AC_CACHE_CHECK([for $LD option to reload object files],
-  lt_cv_ld_reload_flag,
-  [lt_cv_ld_reload_flag='-r'])
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
-  darwin*)
-    if test "$GCC" = yes; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-    else
-      reload_cmds='$LD$reload_flag -o $output$reload_objs'
-    fi
-    ;;
-esac
-_LT_DECL([], [reload_flag], [1], [How to create reloadable object files])dnl
-_LT_DECL([], [reload_cmds], [2])dnl
-])# _LT_CMD_RELOAD
-
-
-# _LT_CHECK_MAGIC_METHOD
-# ----------------------
-# how to check for library dependencies
-#  -- PORTME fill in with the dynamic library characteristics
-m4_defun([_LT_CHECK_MAGIC_METHOD],
-[m4_require([_LT_DECL_EGREP])
-m4_require([_LT_DECL_OBJDUMP])
-AC_CACHE_CHECK([how to recognize dependent libraries],
-lt_cv_deplibs_check_method,
-[lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix[[4-9]]*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-bsdi[[45]]*)
-  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
-  lt_cv_file_magic_test_file=/shlib/libc.so
-  ;;
-
-cygwin*)
-  # func_win32_libid is a shell function defined in ltmain.sh
-  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-  lt_cv_file_magic_cmd='func_win32_libid'
-  ;;
-
-mingw* | pw32*)
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump',
-  # unless we find 'file', for example because we are cross-compiling.
-  if ( file / ) >/dev/null 2>&1; then
-    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-    lt_cv_file_magic_cmd='func_win32_libid'
-  else
-    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-    lt_cv_file_magic_cmd='$OBJDUMP -f'
-  fi
-  ;;
-
-cegcc)
-  # use the weaker test based on 'objdump'. See mingw*.
-  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
-  lt_cv_file_magic_cmd='$OBJDUMP -f'
-  ;;
-
-darwin* | rhapsody*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-freebsd* | dragonfly*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    case $host_cpu in
-    i*86 )
-      # Not sure whether the presence of OpenBSD here was a mistake.
-      # Let's accept both of them until this is cleared up.
-      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
-      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-      ;;
-    esac
-  else
-    lt_cv_deplibs_check_method=pass_all
-  fi
-  ;;
-
-gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
-  case $host_cpu in
-  ia64*)
-    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
-    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-    ;;
-  hppa*64*)
-    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
-    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-    ;;
-  *)
-    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
-    lt_cv_file_magic_test_file=/usr/lib/libc.sl
-    ;;
-  esac
-  ;;
-
-interix[[3-9]]*)
-  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $LD in
-  *-32|*"-32 ") libmagic=32-bit;;
-  *-n32|*"-n32 ") libmagic=N32;;
-  *-64|*"-64 ") libmagic=64-bit;;
-  *) libmagic=never-match;;
-  esac
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-netbsd* | netbsdelf*-gnu)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
-  fi
-  ;;
-
-newos6*)
-  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
-  lt_cv_file_magic_test_file=/usr/lib/libnls.so
-  ;;
-
-*nto* | *qnx*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-openbsd*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
-  fi
-  ;;
-
-osf3* | osf4* | osf5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-rdos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-solaris*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv4 | sysv4.3*)
-  case $host_vendor in
-  motorola)
-    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
-    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-    ;;
-  ncr)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  sequent)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
-    ;;
-  sni)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
-    lt_cv_file_magic_test_file=/lib/libc.so
-    ;;
-  siemens)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  pc)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  esac
-  ;;
-
-tpf*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-esac
-])
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-_LT_DECL([], [deplibs_check_method], [1],
-    [Method to check whether dependent libraries are shared objects])
-_LT_DECL([], [file_magic_cmd], [1],
-    [Command to use when deplibs_check_method == "file_magic"])
-])# _LT_CHECK_MAGIC_METHOD
-
-
-# LT_PATH_NM
-# ----------
-# find the pathname to a BSD- or MS-compatible name lister
-AC_DEFUN([LT_PATH_NM],
-[AC_REQUIRE([AC_PROG_CC])dnl
-AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
-[if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM="$NM"
-else
-  lt_nm_to_check="${ac_tool_prefix}nm"
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-    lt_nm_to_check="$lt_nm_to_check nm"
-  fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-	# Check to see if the nm accepts a BSD-compat flag.
-	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
-	#   nm: unknown option "B" ignored
-	# Tru64's nm complains that /dev/null is an invalid object file
-	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-	*/dev/null* | *'Invalid file or object type'*)
-	  lt_cv_path_NM="$tmp_nm -B"
-	  break
-	  ;;
-	*)
-	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-	  */dev/null*)
-	    lt_cv_path_NM="$tmp_nm -p"
-	    break
-	    ;;
-	  *)
-	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-	    continue # so that we can try to find one that supports BSD flags
-	    ;;
-	  esac
-	  ;;
-	esac
-      fi
-    done
-    IFS="$lt_save_ifs"
-  done
-  : ${lt_cv_path_NM=no}
-fi])
-if test "$lt_cv_path_NM" != "no"; then
-  NM="$lt_cv_path_NM"
-else
-  # Didn't find any BSD compatible name lister, look for dumpbin.
-  AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :)
-  AC_SUBST([DUMPBIN])
-  if test "$DUMPBIN" != ":"; then
-    NM="$DUMPBIN"
-  fi
-fi
-test -z "$NM" && NM=nm
-AC_SUBST([NM])
-_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
-
-AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
-  [lt_cv_nm_interface="BSD nm"
-  echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
-  (eval "$ac_compile" 2>conftest.err)
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
-  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD)
-  cat conftest.out >&AS_MESSAGE_LOG_FD
-  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-    lt_cv_nm_interface="MS dumpbin"
-  fi
-  rm -f conftest*])
-])# LT_PATH_NM
-
-# Old names:
-AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
-AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_PROG_NM], [])
-dnl AC_DEFUN([AC_PROG_NM], [])
-
-
-# LT_LIB_M
-# --------
-# check for math library
-AC_DEFUN([LT_LIB_M],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-LIBM=
-case $host in
-*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
-  # These system don't have libm, or don't need it
-  ;;
-*-ncr-sysv4.3*)
-  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
-  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
-  ;;
-*)
-  AC_CHECK_LIB(m, cos, LIBM="-lm")
-  ;;
-esac
-AC_SUBST([LIBM])
-])# LT_LIB_M
-
-# Old name:
-AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_CHECK_LIBM], [])
-
-
-# _LT_COMPILER_NO_RTTI([TAGNAME])
-# -------------------------------
-m4_defun([_LT_COMPILER_NO_RTTI],
-[m4_require([_LT_TAG_COMPILER])dnl
-
-_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-
-if test "$GCC" = yes; then
-  _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
-
-  _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
-    lt_cv_prog_compiler_rtti_exceptions,
-    [-fno-rtti -fno-exceptions], [],
-    [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
-fi
-_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
-	[Compiler flag to turn off builtin functions])
-])# _LT_COMPILER_NO_RTTI
-
-
-# _LT_CMD_GLOBAL_SYMBOLS
-# ----------------------
-m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-AC_REQUIRE([LT_PATH_LD])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-AC_MSG_CHECKING([command to parse $NM output from $compiler object])
-AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
-[
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[[BCDEGRST]]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
-
-# Define system-specific variables.
-case $host_os in
-aix*)
-  symcode='[[BCDT]]'
-  ;;
-cygwin* | mingw* | pw32* | cegcc*)
-  symcode='[[ABCDGISTW]]'
-  ;;
-hpux*)
-  if test "$host_cpu" = ia64; then
-    symcode='[[ABCDEGRST]]'
-  fi
-  ;;
-irix* | nonstopux*)
-  symcode='[[BCDEGRST]]'
-  ;;
-osf*)
-  symcode='[[BCDEGQRST]]'
-  ;;
-solaris*)
-  symcode='[[BDRT]]'
-  ;;
-sco3.2v5*)
-  symcode='[[DT]]'
-  ;;
-sysv4.2uw2*)
-  symcode='[[DT]]'
-  ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
-  symcode='[[ABDT]]'
-  ;;
-sysv4)
-  symcode='[[DFNSTU]]'
-  ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
-  symcode='[[ABCDGIRSTW]]' ;;
-esac
-
-# Transform an extracted symbol line into a proper C declaration.
-# Some systems (esp. on ia64) link data and code symbols differently,
-# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
-  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-  ;;
-esac
-
-# Try without a prefix underscore, then with it.
-for ac_symprfx in "" "_"; do
-
-  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
-  symxfrm="\\1 $ac_symprfx\\2 \\2"
-
-  # Write the raw and C identifiers.
-  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-    # Fake it for dumpbin and say T for any non-static function
-    # and D for any global variable.
-    # Also find C++ and __fastcall symbols from MSVC++,
-    # which start with @ or ?.
-    lt_cv_sys_global_symbol_pipe="$AWK ['"\
-"     {last_section=section; section=\$ 3};"\
-"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
-"     \$ 0!~/External *\|/{next};"\
-"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
-"     {if(hide[section]) next};"\
-"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
-"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
-"     ' prfx=^$ac_symprfx]"
-  else
-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[	 ]]\($symcode$symcode*\)[[	 ]][[	 ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
-  fi
-
-  # Check to see that the pipe works correctly.
-  pipe_works=no
-
-  rm -f conftest*
-  cat > conftest.$ac_ext <<_LT_EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(void);
-void nm_test_func(void){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-_LT_EOF
-
-  if AC_TRY_EVAL(ac_compile); then
-    # Now try to grab the symbols.
-    nlist=conftest.nm
-    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
-      # Try sorting and uniquifying the output.
-      if sort "$nlist" | uniq > "$nlist"T; then
-	mv -f "$nlist"T "$nlist"
-      else
-	rm -f "$nlist"T
-      fi
-
-      # Make sure that we snagged all the symbols we need.
-      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
-	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
-	  cat <<_LT_EOF > conftest.$ac_ext
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_LT_EOF
-	  # Now generate the symbol file.
-	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
-
-	  cat <<_LT_EOF >> conftest.$ac_ext
-
-/* The mapping between symbol names and symbols.  */
-const struct {
-  const char *name;
-  void       *address;
-}
-lt__PROGRAM__LTX_preloaded_symbols[[]] =
-{
-  { "@PROGRAM@", (void *) 0 },
-_LT_EOF
-	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
-	  cat <<\_LT_EOF >> conftest.$ac_ext
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt__PROGRAM__LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-_LT_EOF
-	  # Now try linking the two files.
-	  mv conftest.$ac_objext conftstm.$ac_objext
-	  lt_save_LIBS="$LIBS"
-	  lt_save_CFLAGS="$CFLAGS"
-	  LIBS="conftstm.$ac_objext"
-	  CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
-	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
-	    pipe_works=yes
-	  fi
-	  LIBS="$lt_save_LIBS"
-	  CFLAGS="$lt_save_CFLAGS"
-	else
-	  echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
-	fi
-      else
-	echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
-      fi
-    else
-      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
-    fi
-  else
-    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
-    cat conftest.$ac_ext >&5
-  fi
-  rm -rf conftest* conftst*
-
-  # Do not use the global_symbol_pipe unless it works.
-  if test "$pipe_works" = yes; then
-    break
-  else
-    lt_cv_sys_global_symbol_pipe=
-  fi
-done
-])
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
-  lt_cv_sys_global_symbol_to_cdecl=
-fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  AC_MSG_RESULT(failed)
-else
-  AC_MSG_RESULT(ok)
-fi
-
-_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
-    [Take the output of nm and produce a listing of raw symbols and C names])
-_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
-    [Transform the output of nm in a proper C declaration])
-_LT_DECL([global_symbol_to_c_name_address],
-    [lt_cv_sys_global_symbol_to_c_name_address], [1],
-    [Transform the output of nm in a C name address pair])
-_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
-    [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
-    [Transform the output of nm in a C name address pair when lib prefix is needed])
-]) # _LT_CMD_GLOBAL_SYMBOLS
-
-
-# _LT_COMPILER_PIC([TAGNAME])
-# ---------------------------
-m4_defun([_LT_COMPILER_PIC],
-[m4_require([_LT_TAG_COMPILER])dnl
-_LT_TAGVAR(lt_prog_compiler_wl, $1)=
-_LT_TAGVAR(lt_prog_compiler_pic, $1)=
-_LT_TAGVAR(lt_prog_compiler_static, $1)=
-
-AC_MSG_CHECKING([for $compiler option to produce PIC])
-m4_if([$1], [CXX], [
-  # C++ specific cases for pic, static, wl, etc.
-  if test "$GXX" = yes; then
-    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-
-    case $host_os in
-    aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-    mingw* | cygwin* | os2* | pw32* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      m4_if([$1], [GCJ], [],
-	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      ;;
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-      ;;
-    *djgpp*)
-      # DJGPP does not support shared libraries at all
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-      ;;
-    interix[[3-9]]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-      fi
-      ;;
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	;;
-      esac
-      ;;
-    *qnx* | *nto*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-      ;;
-    *)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-      ;;
-    esac
-  else
-    case $host_os in
-      aix[[4-9]]*)
-	# All AIX code is PIC.
-	if test "$host_cpu" = ia64; then
-	  # AIX 5 now supports IA64 processor
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	else
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
-	fi
-	;;
-      chorus*)
-	case $cc_basename in
-	cxch68*)
-	  # Green Hills C++ Compiler
-	  # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
-	  ;;
-	esac
-	;;
-      dgux*)
-	case $cc_basename in
-	  ec++*)
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    ;;
-	  ghcx*)
-	    # Green Hills C++ Compiler
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      freebsd* | dragonfly*)
-	# FreeBSD uses GNU C++
-	;;
-      hpux9* | hpux10* | hpux11*)
-	case $cc_basename in
-	  CC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-	    if test "$host_cpu" != ia64; then
-	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-	    fi
-	    ;;
-	  aCC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-	    case $host_cpu in
-	    hppa*64*|ia64*)
-	      # +Z the default
-	      ;;
-	    *)
-	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-	      ;;
-	    esac
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      interix*)
-	# This is c89, which is MS Visual C++ (no shared libs)
-	# Anyone wants to do a port?
-	;;
-      irix5* | irix6* | nonstopux*)
-	case $cc_basename in
-	  CC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-	    # CC pic flag -KPIC is the default.
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      linux* | k*bsd*-gnu)
-	case $cc_basename in
-	  KCC*)
-	    # KAI C++ Compiler
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	    ;;
-	  ecpc* )
-	    # old Intel C++ for x86_64 which still supported -KPIC.
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-	    ;;
-	  icpc* )
-	    # Intel C++, used to be incompatible with GCC.
-	    # ICC 10 doesn't accept -KPIC any more.
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-	    ;;
-	  pgCC* | pgcpp*)
-	    # Portland Group C++ compiler
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    ;;
-	  cxx*)
-	    # Compaq C++
-	    # Make sure the PIC flag is empty.  It appears that all Alpha
-	    # Linux and Compaq Tru64 Unix objects are PIC.
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-	    ;;
-	  xlc* | xlC*)
-	    # IBM XL 8.0 on PPC
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
-	    ;;
-	  *)
-	    case `$CC -V 2>&1 | sed 5q` in
-	    *Sun\ C*)
-	      # Sun C++ 5.9
-	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-	      ;;
-	    esac
-	    ;;
-	esac
-	;;
-      lynxos*)
-	;;
-      m88k*)
-	;;
-      mvs*)
-	case $cc_basename in
-	  cxx*)
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      netbsd* | netbsdelf*-gnu)
-	;;
-      *qnx* | *nto*)
-        # QNX uses GNU C++, but need to define -shared option too, otherwise
-        # it will coredump.
-        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-        ;;
-      osf3* | osf4* | osf5*)
-	case $cc_basename in
-	  KCC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
-	    ;;
-	  RCC*)
-	    # Rational C++ 2.4.1
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    ;;
-	  cxx*)
-	    # Digital/Compaq C++
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    # Make sure the PIC flag is empty.  It appears that all Alpha
-	    # Linux and Compaq Tru64 Unix objects are PIC.
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      psos*)
-	;;
-      solaris*)
-	case $cc_basename in
-	  CC*)
-	    # Sun C++ 4.2, 5.x and Centerline C++
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-	    ;;
-	  gcx*)
-	    # Green Hills C++ Compiler
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sunos4*)
-	case $cc_basename in
-	  CC*)
-	    # Sun C++ 4.x
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    ;;
-	  lcc*)
-	    # Lucid
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-	case $cc_basename in
-	  CC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    ;;
-	esac
-	;;
-      tandem*)
-	case $cc_basename in
-	  NCC*)
-	    # NonStop-UX NCC 3.20
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      vxworks*)
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-	;;
-    esac
-  fi
-],
-[
-  if test "$GCC" = yes; then
-    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      m4_if([$1], [GCJ], [],
-	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	# +Z the default
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	;;
-      esac
-      ;;
-
-    interix[[3-9]]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      else
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      m4_if([$1], [GCJ], [],
-	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # PIC (with -KPIC) is the default.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu)
-      case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
-      ecc*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-        ;;
-      ccc*)
-        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-        # All Alpha code is PIC.
-        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-        ;;
-      xl*)
-	# IBM XL C 8.0/Fortran 10.1 on PPC
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)
-	  # Sun C 5.9
-	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	  ;;
-	*Sun\ F*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    newsos6)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # All OSF/1 code is PIC.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    rdos*)
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    solaris*)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    unicos*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      ;;
-
-    uts4*)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    *)
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      ;;
-    esac
-  fi
-])
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-    ;;
-  *)
-    _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
-    ;;
-esac
-AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
-_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
-	[How to pass a linker flag through the compiler])
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
-  _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
-    [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
-    [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
-    [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
-     "" | " "*) ;;
-     *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
-     esac],
-    [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
-     _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
-fi
-_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
-	[Additional compiler flags for building library objects])
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
-_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
-  _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
-  $lt_tmp_static_flag,
-  [],
-  [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
-_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
-	[Compiler flag to prevent dynamic linking])
-])# _LT_COMPILER_PIC
-
-
-# _LT_LINKER_SHLIBS([TAGNAME])
-# ----------------------------
-# See if the linker supports building shared libraries.
-m4_defun([_LT_LINKER_SHLIBS],
-[AC_REQUIRE([LT_PATH_LD])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-m4_if([$1], [CXX], [
-  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  case $host_os in
-  aix[[4-9]]*)
-    # If we're using GNU nm, then we don't want the "-C" option.
-    # -C means demangle to AIX nm, but means don't demangle with GNU nm
-    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-    else
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-    fi
-    ;;
-  pw32*)
-    _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
-  ;;
-  cygwin* | mingw* | cegcc*)
-    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
-  ;;
-  linux* | k*bsd*-gnu)
-    _LT_TAGVAR(link_all_deplibs, $1)=no
-  ;;
-  *)
-    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  ;;
-  esac
-  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
-], [
-  runpath_var=
-  _LT_TAGVAR(allow_undefined_flag, $1)=
-  _LT_TAGVAR(always_export_symbols, $1)=no
-  _LT_TAGVAR(archive_cmds, $1)=
-  _LT_TAGVAR(archive_expsym_cmds, $1)=
-  _LT_TAGVAR(compiler_needs_object, $1)=no
-  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-  _LT_TAGVAR(export_dynamic_flag_spec, $1)=
-  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  _LT_TAGVAR(hardcode_automatic, $1)=no
-  _LT_TAGVAR(hardcode_direct, $1)=no
-  _LT_TAGVAR(hardcode_direct_absolute, $1)=no
-  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-  _LT_TAGVAR(hardcode_libdir_separator, $1)=
-  _LT_TAGVAR(hardcode_minus_L, $1)=no
-  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-  _LT_TAGVAR(inherit_rpath, $1)=no
-  _LT_TAGVAR(link_all_deplibs, $1)=unknown
-  _LT_TAGVAR(module_cmds, $1)=
-  _LT_TAGVAR(module_expsym_cmds, $1)=
-  _LT_TAGVAR(old_archive_from_new_cmds, $1)=
-  _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
-  _LT_TAGVAR(thread_safe_flag_spec, $1)=
-  _LT_TAGVAR(whole_archive_flag_spec, $1)=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  _LT_TAGVAR(include_expsyms, $1)=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-dnl Note also adjust exclude_expsyms for C++ above.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  esac
-
-  _LT_TAGVAR(ld_shlibs, $1)=yes
-  if test "$with_gnu_ld" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      _LT_TAGVAR(whole_archive_flag_spec, $1)=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[[3-9]]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to modify your PATH
-*** so that a non-GNU linker is found, and then restart.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            _LT_TAGVAR(archive_expsym_cmds, $1)=''
-        ;;
-      m68k)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-            _LT_TAGVAR(hardcode_minus_L, $1)=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	_LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-      # as there is no search path for DLLs.
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(always_export_symbols, $1)=no
-      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    interix[[3-9]]*)
-      _LT_TAGVAR(hardcode_direct, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-	case $cc_basename in
-	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
-	esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
-      then
-	tmp_addflag=
-	tmp_sharedflag='-shared'
-	case $cc_basename,$host_cpu in
-        pgcc*)				# Portland Group C compiler
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	lf95*)				# Lahey Fortran 8.1
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)=
-	  tmp_sharedflag='--shared' ;;
-	xl[[cC]]*)			# IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-	  _LT_TAGVAR(compiler_needs_object, $1)=yes
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	esac
-	_LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-        if test "x$supports_anon_versioning" = xyes; then
-          _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-
-	case $cc_basename in
-	xlf*)
-	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-	  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-	  fi
-	  ;;
-	esac
-      else
-        _LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  # For security reasons, it is highly recommended that you always
-	  # use absolute paths for naming shared libraries, and exclude the
-	  # DT_RUNPATH tag from executables and libraries.  But doing so
-	  # requires that you compile everything twice, which is a pain.
-	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  else
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-    esac
-
-    if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
-      runpath_var=
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)=
-      _LT_TAGVAR(whole_archive_flag_spec, $1)=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(always_export_symbols, $1)=yes
-      _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	_LT_TAGVAR(hardcode_direct, $1)=unsupported
-      fi
-      ;;
-
-    aix[[4-9]]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	else
-	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
-	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-	    aix_use_runtimelinking=yes
-	    break
-	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      _LT_TAGVAR(archive_cmds, $1)=''
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[[012]]|aix4.[[012]].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	  # We have reworked collect2
-	  :
-	  else
-	  # We have old collect2
-	  _LT_TAGVAR(hardcode_direct, $1)=unsupported
-	  # It fails to find uninstalled libraries when the uninstalled
-	  # path is not listed in the libpath.  Setting hardcode_minus_L
-	  # to unsupported forces relinking
-	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-	  _LT_TAGVAR(hardcode_libdir_separator, $1)=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-	_LT_TAGVAR(link_all_deplibs, $1)=no
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      _LT_TAGVAR(always_export_symbols, $1)=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        _LT_SYS_MODULE_PATH_AIX
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-	if test "$host_cpu" = ia64; then
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
-	  _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an
-	 # empty executable.
-	 _LT_SYS_MODULE_PATH_AIX
-	 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
-	  _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-	  # Exported symbols can be pulled into shared objects from archives
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            _LT_TAGVAR(archive_expsym_cmds, $1)=''
-        ;;
-      m68k)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-            _LT_TAGVAR(hardcode_minus_L, $1)=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[[45]]*)
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      # Tell ltmain to make .lib files, not .a files.
-      libext=lib
-      # Tell ltmain to make .dll files, not .so files.
-      shrext_cmds=".dll"
-      # FIXME: Setting linknames here is a bad hack.
-      _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
-      # The linker will automatically build a .lib file if we build a DLL.
-      _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-      # FIXME: Should let the user specify the lib program.
-      _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
-      _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
-      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-      ;;
-
-    darwin* | rhapsody*)
-      _LT_DARWIN_LINKER_FEATURES($1)
-      ;;
-
-    dgux*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    freebsd1*)
-      _LT_TAGVAR(ld_shlibs, $1)=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
-	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
-	_LT_TAGVAR(hardcode_direct, $1)=yes
-	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	_LT_TAGVAR(hardcode_minus_L, $1)=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  _LT_TAGVAR(hardcode_direct, $1)=no
-	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	  ;;
-	*)
-	  _LT_TAGVAR(hardcode_direct, $1)=yes
-	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	# Try to use the -exported_symbol ld option, if it does not
-	# work, assume that -exports_file does not work either and
-	# implicitly export all symbols.
-        save_LDFLAGS="$LDFLAGS"
-        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-        AC_LINK_IFELSE(int foo(void) {},
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-        )
-        LDFLAGS="$save_LDFLAGS"
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_TAGVAR(inherit_rpath, $1)=yes
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    newsos6)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	_LT_TAGVAR(hardcode_direct, $1)=yes
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
-	     _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	     ;;
-	   *)
-	     _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-	fi
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    os2*)
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      else
-	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-      fi
-      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      ;;
-
-    solaris*)
-      _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-	case `$CC -V 2>&1` in
-	*"Compilers 5.0"*)
-	  wlarc=''
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-	  ;;
-	*)
-	  wlarc='${wl}'
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-	  ;;
-	esac
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      case $host_os in
-      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
-	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
-	  _LT_TAGVAR(hardcode_direct, $1)=no
-        ;;
-	motorola)
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    sysv4.3*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	_LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	_LT_TAGVAR(ld_shlibs, $1)=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *)
-      _LT_TAGVAR(ld_shlibs, $1)=no
-      ;;
-    esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
-	;;
-      esac
-    fi
-  fi
-])
-AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
-_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
-
-_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
-_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
-_LT_DECL([], [extract_expsyms_cmds], [2],
-    [The commands to extract the exported symbol list from a shared archive])
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
-x|xyes)
-  # Assume -lc should be added
-  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $_LT_TAGVAR(archive_cmds, $1) in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      AC_MSG_CHECKING([whether -lc should be explicitly linked in])
-      $RM conftest*
-      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-      if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
-        soname=conftest
-        lib=conftest
-        libobjs=conftest.$ac_objext
-        deplibs=
-        wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
-	pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
-        compiler_flags=-v
-        linker_flags=-v
-        verstring=
-        output_objdir=.
-        libname=conftest
-        lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
-        _LT_TAGVAR(allow_undefined_flag, $1)=
-        if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
-        then
-	  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-        else
-	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-        fi
-        _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
-      else
-        cat conftest.err 1>&5
-      fi
-      $RM conftest*
-      AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)])
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
-    [Whether or not to add -lc for building shared libraries])
-_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
-    [enable_shared_with_static_runtimes], [0],
-    [Whether or not to disallow shared libs when runtime libs are static])
-_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
-    [Compiler flag to allow reflexive dlopens])
-_LT_TAGDECL([], [whole_archive_flag_spec], [1],
-    [Compiler flag to generate shared objects directly from archives])
-_LT_TAGDECL([], [compiler_needs_object], [1],
-    [Whether the compiler copes with passing no objects directly])
-_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
-    [Create an old-style archive from a shared archive])
-_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
-    [Create a temporary old-style archive to link instead of a shared archive])
-_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
-_LT_TAGDECL([], [archive_expsym_cmds], [2])
-_LT_TAGDECL([], [module_cmds], [2],
-    [Commands used to build a loadable module if different from building
-    a shared archive.])
-_LT_TAGDECL([], [module_expsym_cmds], [2])
-_LT_TAGDECL([], [with_gnu_ld], [1],
-    [Whether we are building with GNU ld or not])
-_LT_TAGDECL([], [allow_undefined_flag], [1],
-    [Flag that allows shared libraries with undefined symbols to be built])
-_LT_TAGDECL([], [no_undefined_flag], [1],
-    [Flag that enforces no undefined symbols])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
-    [Flag to hardcode $libdir into a binary during linking.
-    This must work even if $libdir does not exist])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
-    [[If ld is used when linking, flag to hardcode $libdir into a binary
-    during linking.  This must work even if $libdir does not exist]])
-_LT_TAGDECL([], [hardcode_libdir_separator], [1],
-    [Whether we need a single "-rpath" flag with a separated argument])
-_LT_TAGDECL([], [hardcode_direct], [0],
-    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
-    DIR into the resulting binary])
-_LT_TAGDECL([], [hardcode_direct_absolute], [0],
-    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
-    DIR into the resulting binary and the resulting library dependency is
-    "absolute", i.e impossible to change by setting ${shlibpath_var} if the
-    library is relocated])
-_LT_TAGDECL([], [hardcode_minus_L], [0],
-    [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-    into the resulting binary])
-_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
-    [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-    into the resulting binary])
-_LT_TAGDECL([], [hardcode_automatic], [0],
-    [Set to "yes" if building a shared library automatically hardcodes DIR
-    into the library and all subsequent libraries and executables linked
-    against it])
-_LT_TAGDECL([], [inherit_rpath], [0],
-    [Set to yes if linker adds runtime paths of dependent libraries
-    to runtime path list])
-_LT_TAGDECL([], [link_all_deplibs], [0],
-    [Whether libtool must link a program against all its dependency libraries])
-_LT_TAGDECL([], [fix_srcfile_path], [1],
-    [Fix the shell variable $srcfile for the compiler])
-_LT_TAGDECL([], [always_export_symbols], [0],
-    [Set to "yes" if exported symbols are required])
-_LT_TAGDECL([], [export_symbols_cmds], [2],
-    [The commands to list exported symbols])
-_LT_TAGDECL([], [exclude_expsyms], [1],
-    [Symbols that should not be listed in the preloaded symbols])
-_LT_TAGDECL([], [include_expsyms], [1],
-    [Symbols that must always be exported])
-_LT_TAGDECL([], [prelink_cmds], [2],
-    [Commands necessary for linking programs (against libraries) with templates])
-_LT_TAGDECL([], [file_list_spec], [1],
-    [Specify filename containing input files])
-dnl FIXME: Not yet implemented
-dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
-dnl    [Compiler flag to generate thread safe objects])
-])# _LT_LINKER_SHLIBS
-
-
-# _LT_LANG_C_CONFIG([TAG])
-# ------------------------
-# Ensure that the configuration variables for a C compiler are suitably
-# defined.  These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_C_CONFIG],
-[m4_require([_LT_DECL_EGREP])dnl
-lt_save_CC="$CC"
-AC_LANG_PUSH(C)
-
-# Source file extension for C test sources.
-ac_ext=c
-
-# Object file extension for compiled C test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}'
-
-_LT_TAG_COMPILER
-# Save the default compiler, since it gets overwritten when the other
-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
-compiler_DEFAULT=$CC
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-if test -n "$compiler"; then
-  _LT_COMPILER_NO_RTTI($1)
-  _LT_COMPILER_PIC($1)
-  _LT_COMPILER_C_O($1)
-  _LT_COMPILER_FILE_LOCKS($1)
-  _LT_LINKER_SHLIBS($1)
-  _LT_SYS_DYNAMIC_LINKER($1)
-  _LT_LINKER_HARDCODE_LIBPATH($1)
-  LT_SYS_DLOPEN_SELF
-  _LT_CMD_STRIPLIB
-
-  # Report which library types will actually be built
-  AC_MSG_CHECKING([if libtool supports shared libraries])
-  AC_MSG_RESULT([$can_build_shared])
-
-  AC_MSG_CHECKING([whether to build shared libraries])
-  test "$can_build_shared" = "no" && enable_shared=no
-
-  # On AIX, shared libraries and static libraries use the same namespace, and
-  # are all built from PIC.
-  case $host_os in
-  aix3*)
-    test "$enable_shared" = yes && enable_static=no
-    if test -n "$RANLIB"; then
-      archive_cmds="$archive_cmds~\$RANLIB \$lib"
-      postinstall_cmds='$RANLIB $lib'
-    fi
-    ;;
-
-  aix[[4-9]]*)
-    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-      test "$enable_shared" = yes && enable_static=no
-    fi
-    ;;
-  esac
-  AC_MSG_RESULT([$enable_shared])
-
-  AC_MSG_CHECKING([whether to build static libraries])
-  # Make sure either enable_shared or enable_static is yes.
-  test "$enable_shared" = yes || enable_static=yes
-  AC_MSG_RESULT([$enable_static])
-
-  _LT_CONFIG($1)
-fi
-AC_LANG_POP
-CC="$lt_save_CC"
-])# _LT_LANG_C_CONFIG
-
-
-# _LT_PROG_CXX
-# ------------
-# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++
-# compiler, we have our own version here.
-m4_defun([_LT_PROG_CXX],
-[
-pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes])
-AC_PROG_CXX
-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-    (test "X$CXX" != "Xg++"))) ; then
-  AC_PROG_CXXCPP
-else
-  _lt_caught_CXX_error=yes
-fi
-popdef([AC_MSG_ERROR])
-])# _LT_PROG_CXX
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([_LT_PROG_CXX], [])
-
-
-# _LT_LANG_CXX_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for a C++ compiler are suitably
-# defined.  These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_CXX_CONFIG],
-[AC_REQUIRE([_LT_PROG_CXX])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_EGREP])dnl
-
-AC_LANG_PUSH(C++)
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(compiler_needs_object, $1)=no
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for C++ test sources.
-ac_ext=cpp
-
-# Object file extension for compiled C++ test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the CXX compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_caught_CXX_error" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="int some_variable = 0;"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  _LT_TAG_COMPILER
-
-  # save warnings/boilerplate of simple test code
-  _LT_COMPILER_BOILERPLATE
-  _LT_LINKER_BOILERPLATE
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC=$CC
-  lt_save_LD=$LD
-  lt_save_GCC=$GCC
-  GCC=$GXX
-  lt_save_with_gnu_ld=$with_gnu_ld
-  lt_save_path_LD=$lt_cv_path_LD
-  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
-    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
-  else
-    $as_unset lt_cv_prog_gnu_ld
-  fi
-  if test -n "${lt_cv_path_LDCXX+set}"; then
-    lt_cv_path_LD=$lt_cv_path_LDCXX
-  else
-    $as_unset lt_cv_path_LD
-  fi
-  test -z "${LDCXX+set}" || LD=$LDCXX
-  CC=${CXX-"c++"}
-  compiler=$CC
-  _LT_TAGVAR(compiler, $1)=$CC
-  _LT_CC_BASENAME([$compiler])
-
-  if test -n "$compiler"; then
-    # We don't want -fno-exception when compiling C++ code, so set the
-    # no_builtin_flag separately
-    if test "$GXX" = yes; then
-      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
-    else
-      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-    fi
-
-    if test "$GXX" = yes; then
-      # Set up default GNU C++ configuration
-
-      LT_PATH_LD
-
-      # Check if GNU C++ uses GNU ld as the underlying linker, since the
-      # archiving commands below assume that GNU ld is being used.
-      if test "$with_gnu_ld" = yes; then
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-
-        # If archive_cmds runs LD, not CC, wlarc should be empty
-        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
-        #     investigate it a little bit more. (MM)
-        wlarc='${wl}'
-
-        # ancient GNU ld didn't support --whole-archive et. al.
-        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
-	  $GREP 'no-whole-archive' > /dev/null; then
-          _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-        else
-          _LT_TAGVAR(whole_archive_flag_spec, $1)=
-        fi
-      else
-        with_gnu_ld=no
-        wlarc=
-
-        # A generic and very simple default shared library creation
-        # command for GNU C++ for the case where it uses the native
-        # linker, instead of GNU ld.  If possible, this setting should
-        # overridden to take advantage of the native linker features on
-        # the platform it is being used on.
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-      fi
-
-      # Commands to make compiler produce verbose output that lists
-      # what "hidden" libraries, object files and flags are used when
-      # linking a shared library.
-      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
-
-    else
-      GXX=no
-      with_gnu_ld=no
-      wlarc=
-    fi
-
-    # PORTME: fill in a description of your system's C++ link characteristics
-    AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-    _LT_TAGVAR(ld_shlibs, $1)=yes
-    case $host_os in
-      aix3*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-      aix[[4-9]]*)
-        if test "$host_cpu" = ia64; then
-          # On IA64, the linker does run time linking by default, so we don't
-          # have to do anything special.
-          aix_use_runtimelinking=no
-          exp_sym_flag='-Bexport'
-          no_entry_flag=""
-        else
-          aix_use_runtimelinking=no
-
-          # Test if we are trying to use run time linking or normal
-          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-          # need to do runtime linking.
-          case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
-	    for ld_flag in $LDFLAGS; do
-	      case $ld_flag in
-	      *-brtl*)
-	        aix_use_runtimelinking=yes
-	        break
-	        ;;
-	      esac
-	    done
-	    ;;
-          esac
-
-          exp_sym_flag='-bexport'
-          no_entry_flag='-bnoentry'
-        fi
-
-        # When large executables or shared objects are built, AIX ld can
-        # have problems creating the table of contents.  If linking a library
-        # or program results in "error TOC overflow" add -mminimal-toc to
-        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-        _LT_TAGVAR(archive_cmds, $1)=''
-        _LT_TAGVAR(hardcode_direct, $1)=yes
-        _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-        _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-        _LT_TAGVAR(link_all_deplibs, $1)=yes
-        _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
-
-        if test "$GXX" = yes; then
-          case $host_os in aix4.[[012]]|aix4.[[012]].*)
-          # We only want to do this on AIX 4.2 and lower, the check
-          # below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	    # We have reworked collect2
-	    :
-	  else
-	    # We have old collect2
-	    _LT_TAGVAR(hardcode_direct, $1)=unsupported
-	    # It fails to find uninstalled libraries when the uninstalled
-	    # path is not listed in the libpath.  Setting hardcode_minus_L
-	    # to unsupported forces relinking
-	    _LT_TAGVAR(hardcode_minus_L, $1)=yes
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=
-	  fi
-          esac
-          shared_flag='-shared'
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag="$shared_flag "'${wl}-G'
-	  fi
-        else
-          # not using gcc
-          if test "$host_cpu" = ia64; then
-	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	  # chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-          else
-	    if test "$aix_use_runtimelinking" = yes; then
-	      shared_flag='${wl}-G'
-	    else
-	      shared_flag='${wl}-bM:SRE'
-	    fi
-          fi
-        fi
-
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
-        # It seems that -bexpall does not export symbols beginning with
-        # underscore (_), so it is better to generate a list of symbols to
-	# export.
-        _LT_TAGVAR(always_export_symbols, $1)=yes
-        if test "$aix_use_runtimelinking" = yes; then
-          # Warning - without using the other runtime loading flags (-brtl),
-          # -berok will link without error, but may produce a broken library.
-          _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
-          # Determine the default libpath from the value encoded in an empty
-          # executable.
-          _LT_SYS_MODULE_PATH_AIX
-          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-        else
-          if test "$host_cpu" = ia64; then
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
-	    _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-          else
-	    # Determine the default libpath from the value encoded in an
-	    # empty executable.
-	    _LT_SYS_MODULE_PATH_AIX
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-	    # Warning - without using the other run time loading flags,
-	    # -berok will link without error, but may produce a broken library.
-	    _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
-	    _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-	    # Exported symbols can be pulled into shared objects from archives
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-	    _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-	    # This is similar to how AIX traditionally builds its shared
-	    # libraries.
-	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-          fi
-        fi
-        ;;
-
-      beos*)
-	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	  # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-	  # support --undefined.  This deserves some investigation.  FIXME
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	else
-	  _LT_TAGVAR(ld_shlibs, $1)=no
-	fi
-	;;
-
-      chorus*)
-        case $cc_basename in
-          *)
-	  # FIXME: insert proper C++ library support
-	  _LT_TAGVAR(ld_shlibs, $1)=no
-	  ;;
-        esac
-        ;;
-
-      cygwin* | mingw* | pw32* | cegcc*)
-        # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-        # as there is no search path for DLLs.
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-        _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-        _LT_TAGVAR(always_export_symbols, $1)=no
-        _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-
-        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-          # If the export-symbols file already is a .def file (1st line
-          # is EXPORTS), use it as is; otherwise, prepend...
-          _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    cp $export_symbols $output_objdir/$soname.def;
-          else
-	    echo EXPORTS > $output_objdir/$soname.def;
-	    cat $export_symbols >> $output_objdir/$soname.def;
-          fi~
-          $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-        else
-          _LT_TAGVAR(ld_shlibs, $1)=no
-        fi
-        ;;
-      darwin* | rhapsody*)
-        _LT_DARWIN_LINKER_FEATURES($1)
-	;;
-
-      dgux*)
-        case $cc_basename in
-          ec++*)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          ghcx*)
-	    # Green Hills C++ Compiler
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-        esac
-        ;;
-
-      freebsd[[12]]*)
-        # C++ shared libraries reported to be fairly broken before
-	# switch to ELF
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-
-      freebsd-elf*)
-        _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-        ;;
-
-      freebsd* | dragonfly*)
-        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
-        # conventions
-        _LT_TAGVAR(ld_shlibs, $1)=yes
-        ;;
-
-      gnu*)
-        ;;
-
-      hpux9*)
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-        _LT_TAGVAR(hardcode_direct, $1)=yes
-        _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-				             # but as the default
-				             # location of the library.
-
-        case $cc_basename in
-          CC*)
-            # FIXME: insert proper C++ library support
-            _LT_TAGVAR(ld_shlibs, $1)=no
-            ;;
-          aCC*)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-            # Commands to make compiler produce verbose output that lists
-            # what "hidden" libraries, object files and flags are used when
-            # linking a shared library.
-            #
-            # There doesn't appear to be a way to prevent this compiler from
-            # explicitly linking system object files so we need to strip them
-            # from the output so that they don't get included in the library
-            # dependencies.
-            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-            ;;
-          *)
-            if test "$GXX" = yes; then
-              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-            else
-              # FIXME: insert proper C++ library support
-              _LT_TAGVAR(ld_shlibs, $1)=no
-            fi
-            ;;
-        esac
-        ;;
-
-      hpux10*|hpux11*)
-        if test $with_gnu_ld = no; then
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	  _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-          case $host_cpu in
-            hppa*64*|ia64*)
-              ;;
-            *)
-	      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-              ;;
-          esac
-        fi
-        case $host_cpu in
-          hppa*64*|ia64*)
-            _LT_TAGVAR(hardcode_direct, $1)=no
-            _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-            ;;
-          *)
-            _LT_TAGVAR(hardcode_direct, $1)=yes
-            _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-            _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-					         # but as the default
-					         # location of the library.
-            ;;
-        esac
-
-        case $cc_basename in
-          CC*)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          aCC*)
-	    case $host_cpu in
-	      hppa*64*)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	      ia64*)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	      *)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	    esac
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-	    ;;
-          *)
-	    if test "$GXX" = yes; then
-	      if test $with_gnu_ld = no; then
-	        case $host_cpu in
-	          hppa*64*)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	          ia64*)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	          *)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	        esac
-	      fi
-	    else
-	      # FIXME: insert proper C++ library support
-	      _LT_TAGVAR(ld_shlibs, $1)=no
-	    fi
-	    ;;
-        esac
-        ;;
-
-      interix[[3-9]]*)
-	_LT_TAGVAR(hardcode_direct, $1)=no
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-	# Instead, shared libraries are loaded at an image base (0x10000000 by
-	# default) and relocated if they conflict, which is a slow very memory
-	# consuming and fragmenting process.  To avoid this, we pick a random,
-	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-	;;
-      irix5* | irix6*)
-        case $cc_basename in
-          CC*)
-	    # SGI C++
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
-	    # necessary to make sure instantiated templates are included
-	    # in the archive.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
-	    ;;
-          *)
-	    if test "$GXX" = yes; then
-	      if test "$with_gnu_ld" = no; then
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	      else
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib'
-	      fi
-	    fi
-	    _LT_TAGVAR(link_all_deplibs, $1)=yes
-	    ;;
-        esac
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-        _LT_TAGVAR(inherit_rpath, $1)=yes
-        ;;
-
-      linux* | k*bsd*-gnu)
-        case $cc_basename in
-          KCC*)
-	    # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-	    # KCC will only create a shared library if the output file
-	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
-	    # to its proper name (with version) after linking.
-	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
-	    ;;
-	  icpc* | ecpc* )
-	    # Intel C++
-	    with_gnu_ld=yes
-	    # version 8.0 and above of icpc choke on multiply defined symbols
-	    # if we add $predep_objects and $postdep_objects, however 7.1 and
-	    # earlier do not add the objects themselves.
-	    case `$CC -V 2>&1` in
-	      *"Version 7."*)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-		;;
-	      *)  # Version 8.0 or newer
-	        tmp_idyn=
-	        case $host_cpu in
-		  ia64*) tmp_idyn=' -i_dynamic';;
-		esac
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-		;;
-	    esac
-	    _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	    ;;
-          pgCC* | pgcpp*)
-            # Portland Group C++ compiler
-	    case `$CC -V` in
-	    *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*)
-	      _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
-		compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
-	      _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
-		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
-		$RANLIB $oldlib'
-	      _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-	      ;;
-	    *) # Version 6 will use weak symbols
-	      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-	      ;;
-	    esac
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-            ;;
-	  cxx*)
-	    # Compaq C++
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
-
-	    runpath_var=LD_RUN_PATH
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-	    ;;
-	  xl*)
-	    # IBM XL 8.0 on PPC, with GNU ld
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    if test "x$supports_anon_versioning" = xyes; then
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-		echo "local: *; };" >> $output_objdir/$libname.ver~
-		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-	    fi
-	    ;;
-	  *)
-	    case `$CC -V 2>&1 | sed 5q` in
-	    *Sun\ C*)
-	      # Sun C++ 5.9
-	      _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-	      _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
-	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-	      _LT_TAGVAR(compiler_needs_object, $1)=yes
-
-	      # Not sure whether something based on
-	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
-	      # would be better.
-	      output_verbose_link_cmd='echo'
-
-	      # Archives containing C++ object files must be created using
-	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-	      # necessary to make sure instantiated templates are included
-	      # in the archive.
-	      _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
-	      ;;
-	    esac
-	    ;;
-	esac
-	;;
-
-      lynxos*)
-        # FIXME: insert proper C++ library support
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	;;
-
-      m88k*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-	;;
-
-      mvs*)
-        case $cc_basename in
-          cxx*)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-	  *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-	esac
-	;;
-
-      netbsd*)
-        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
-	  wlarc=
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	  _LT_TAGVAR(hardcode_direct, $1)=yes
-	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	fi
-	# Workaround some broken pre-1.5 toolchains
-	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
-	;;
-
-      *nto* | *qnx*)
-        _LT_TAGVAR(ld_shlibs, $1)=yes
-	;;
-
-      openbsd2*)
-        # C++ shared libraries are fairly broken
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	;;
-
-      openbsd*)
-	if test -f /usr/libexec/ld.so; then
-	  _LT_TAGVAR(hardcode_direct, $1)=yes
-	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-	  fi
-	  output_verbose_link_cmd=echo
-	else
-	  _LT_TAGVAR(ld_shlibs, $1)=no
-	fi
-	;;
-
-      osf3* | osf4* | osf5*)
-        case $cc_basename in
-          KCC*)
-	    # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-	    # KCC will only create a shared library if the output file
-	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
-	    # to its proper name (with version) after linking.
-	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	    # Archives containing C++ object files must be created using
-	    # the KAI C++ compiler.
-	    case $host in
-	      osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
-	      *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
-	    esac
-	    ;;
-          RCC*)
-	    # Rational C++ 2.4.1
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          cxx*)
-	    case $host in
-	      osf3*)
-	        _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-		;;
-	      *)
-	        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-	        _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-	          echo "-hidden">> $lib.exp~
-	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~
-	          $RM $lib.exp'
-	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-		;;
-	    esac
-
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-	    ;;
-	  *)
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	      case $host in
-	        osf3*)
-	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-		  ;;
-	        *)
-	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-		  ;;
-	      esac
-
-	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	      # Commands to make compiler produce verbose output that lists
-	      # what "hidden" libraries, object files and flags are used when
-	      # linking a shared library.
-	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
-
-	    else
-	      # FIXME: insert proper C++ library support
-	      _LT_TAGVAR(ld_shlibs, $1)=no
-	    fi
-	    ;;
-        esac
-        ;;
-
-      psos*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-
-      sunos4*)
-        case $cc_basename in
-          CC*)
-	    # Sun C++ 4.x
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          lcc*)
-	    # Lucid
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-        esac
-        ;;
-
-      solaris*)
-        case $cc_basename in
-          CC*)
-	    # Sun C++ 4.2, 5.x and Centerline C++
-            _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
-	    _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	    _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	    case $host_os in
-	      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-	      *)
-		# The compiler driver will combine and reorder linker options,
-		# but understands `-z linker_flag'.
-	        # Supported since Solaris 2.6 (maybe 2.5.1?)
-		_LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
-	        ;;
-	    esac
-	    _LT_TAGVAR(link_all_deplibs, $1)=yes
-
-	    output_verbose_link_cmd='echo'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-	    # necessary to make sure instantiated templates are included
-	    # in the archive.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
-	    ;;
-          gcx*)
-	    # Green Hills C++ Compiler
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-
-	    # The C++ compiler must be used to create the archive.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
-	    ;;
-          *)
-	    # GNU C++ compiler with Solaris linker
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
-	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	        # Commands to make compiler produce verbose output that lists
-	        # what "hidden" libraries, object files and flags are used when
-	        # linking a shared library.
-	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
-	      else
-	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
-	        # platform.
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	        # Commands to make compiler produce verbose output that lists
-	        # what "hidden" libraries, object files and flags are used when
-	        # linking a shared library.
-	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
-	      fi
-
-	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
-	      case $host_os in
-		solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-		*)
-		  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-		  ;;
-	      esac
-	    fi
-	    ;;
-        esac
-        ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      runpath_var='LD_RUN_PATH'
-
-      case $cc_basename in
-        CC*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-      esac
-      ;;
-
-      sysv5* | sco3.2v5* | sco5v6*)
-	# Note: We can NOT use -z defs as we might desire, because we do not
-	# link with -lc, and that would cause any symbols used from libc to
-	# always be unresolved, which means just about no library would
-	# ever link correctly.  If we're not using GNU ld we use -z text
-	# though, which does catch some bad symbols but isn't as heavy-handed
-	# as -z defs.
-	_LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-	_LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
-	_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
-	_LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-	_LT_TAGVAR(link_all_deplibs, $1)=yes
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
-	runpath_var='LD_RUN_PATH'
-
-	case $cc_basename in
-          CC*)
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    ;;
-	  *)
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    ;;
-	esac
-      ;;
-
-      tandem*)
-        case $cc_basename in
-          NCC*)
-	    # NonStop-UX NCC 3.20
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-        esac
-        ;;
-
-      vxworks*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-
-      *)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-    esac
-
-    AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-    test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
-    _LT_TAGVAR(GCC, $1)="$GXX"
-    _LT_TAGVAR(LD, $1)="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    _LT_SYS_HIDDEN_LIBDEPS($1)
-    _LT_COMPILER_PIC($1)
-    _LT_COMPILER_C_O($1)
-    _LT_COMPILER_FILE_LOCKS($1)
-    _LT_LINKER_SHLIBS($1)
-    _LT_SYS_DYNAMIC_LINKER($1)
-    _LT_LINKER_HARDCODE_LIBPATH($1)
-
-    _LT_CONFIG($1)
-  fi # test -n "$compiler"
-
-  CC=$lt_save_CC
-  LDCXX=$LD
-  LD=$lt_save_LD
-  GCC=$lt_save_GCC
-  with_gnu_ld=$lt_save_with_gnu_ld
-  lt_cv_path_LDCXX=$lt_cv_path_LD
-  lt_cv_path_LD=$lt_save_path_LD
-  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
-  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-fi # test "$_lt_caught_CXX_error" != yes
-
-AC_LANG_POP
-])# _LT_LANG_CXX_CONFIG
-
-
-# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
-# ---------------------------------
-# Figure out "hidden" library dependencies from verbose
-# compiler output when linking a shared library.
-# Parse the compiler output and extract the necessary
-# objects, libraries and library flags.
-m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-# Dependencies to place before and after the object being linked:
-_LT_TAGVAR(predep_objects, $1)=
-_LT_TAGVAR(postdep_objects, $1)=
-_LT_TAGVAR(predeps, $1)=
-_LT_TAGVAR(postdeps, $1)=
-_LT_TAGVAR(compiler_lib_search_path, $1)=
-
-dnl we can't use the lt_simple_compile_test_code here,
-dnl because it contains code intended for an executable,
-dnl not a library.  It's possible we should let each
-dnl tag define a new lt_????_link_test_code variable,
-dnl but it's only used here...
-m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
-int a;
-void foo (void) { a = 0; }
-_LT_EOF
-], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
-class Foo
-{
-public:
-  Foo (void) { a = 0; }
-private:
-  int a;
-};
-_LT_EOF
-], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
-      subroutine foo
-      implicit none
-      integer*4 a
-      a=0
-      return
-      end
-_LT_EOF
-], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
-      subroutine foo
-      implicit none
-      integer a
-      a=0
-      return
-      end
-_LT_EOF
-], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
-public class foo {
-  private int a;
-  public void bar (void) {
-    a = 0;
-  }
-};
-_LT_EOF
-])
-dnl Parse the compiler output and extract the necessary
-dnl objects, libraries and library flags.
-if AC_TRY_EVAL(ac_compile); then
-  # Parse the compiler output and extract the necessary
-  # objects, libraries and library flags.
-
-  # Sentinel used to keep track of whether or not we are before
-  # the conftest object file.
-  pre_test_object_deps_done=no
-
-  for p in `eval "$output_verbose_link_cmd"`; do
-    case $p in
-
-    -L* | -R* | -l*)
-       # Some compilers place space between "-{L,R}" and the path.
-       # Remove the space.
-       if test $p = "-L" ||
-          test $p = "-R"; then
-	 prev=$p
-	 continue
-       else
-	 prev=
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-	 case $p in
-	 -L* | -R*)
-	   # Internal compiler library paths should come after those
-	   # provided the user.  The postdeps already come after the
-	   # user supplied libs so there is no need to process them.
-	   if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
-	     _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
-	   else
-	     _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
-	   fi
-	   ;;
-	 # The "-l" case would never come before the object being
-	 # linked, so don't bother handling this case.
-	 esac
-       else
-	 if test -z "$_LT_TAGVAR(postdeps, $1)"; then
-	   _LT_TAGVAR(postdeps, $1)="${prev}${p}"
-	 else
-	   _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
-	 fi
-       fi
-       ;;
-
-    *.$objext)
-       # This assumes that the test object file only shows up
-       # once in the compiler output.
-       if test "$p" = "conftest.$objext"; then
-	 pre_test_object_deps_done=yes
-	 continue
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-	 if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
-	   _LT_TAGVAR(predep_objects, $1)="$p"
-	 else
-	   _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
-	 fi
-       else
-	 if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
-	   _LT_TAGVAR(postdep_objects, $1)="$p"
-	 else
-	   _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
-	 fi
-       fi
-       ;;
-
-    *) ;; # Ignore the rest.
-
-    esac
-  done
-
-  # Clean up.
-  rm -f a.out a.exe
-else
-  echo "libtool.m4: error: problem compiling $1 test program"
-fi
-
-$RM -f confest.$objext
-
-# PORTME: override above test on systems where it is broken
-m4_if([$1], [CXX],
-[case $host_os in
-interix[[3-9]]*)
-  # Interix 3.5 installs completely hosed .la files for C++, so rather than
-  # hack all around it, let's just trust "g++" to DTRT.
-  _LT_TAGVAR(predep_objects,$1)=
-  _LT_TAGVAR(postdep_objects,$1)=
-  _LT_TAGVAR(postdeps,$1)=
-  ;;
-
-linux*)
-  case `$CC -V 2>&1 | sed 5q` in
-  *Sun\ C*)
-    # Sun C++ 5.9
-
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    if test "$solaris_use_stlport4" != yes; then
-      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-
-solaris*)
-  case $cc_basename in
-  CC*)
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    # Adding this requires a known-good setup of shared libraries for
-    # Sun compiler versions before 5.6, else PIC objects from an old
-    # archive will be linked into the output, leading to subtle bugs.
-    if test "$solaris_use_stlport4" != yes; then
-      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-esac
-])
-
-case " $_LT_TAGVAR(postdeps, $1) " in
-*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
-esac
- _LT_TAGVAR(compiler_lib_search_dirs, $1)=
-if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
- _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
-fi
-_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
-    [The directories searched by this compiler when creating a shared library])
-_LT_TAGDECL([], [predep_objects], [1],
-    [Dependencies to place before and after the objects being linked to
-    create a shared library])
-_LT_TAGDECL([], [postdep_objects], [1])
-_LT_TAGDECL([], [predeps], [1])
-_LT_TAGDECL([], [postdeps], [1])
-_LT_TAGDECL([], [compiler_lib_search_path], [1],
-    [The library search path used internally by the compiler when linking
-    a shared library])
-])# _LT_SYS_HIDDEN_LIBDEPS
-
-
-# _LT_PROG_F77
-# ------------
-# Since AC_PROG_F77 is broken, in that it returns the empty string
-# if there is no fortran compiler, we have our own version here.
-m4_defun([_LT_PROG_F77],
-[
-pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes])
-AC_PROG_F77
-if test -z "$F77" || test "X$F77" = "Xno"; then
-  _lt_disable_F77=yes
-fi
-popdef([AC_MSG_ERROR])
-])# _LT_PROG_F77
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([_LT_PROG_F77], [])
-
-
-# _LT_LANG_F77_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for a Fortran 77 compiler are
-# suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_F77_CONFIG],
-[AC_REQUIRE([_LT_PROG_F77])dnl
-AC_LANG_PUSH(Fortran 77)
-
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for f77 test sources.
-ac_ext=f
-
-# Object file extension for compiled f77 test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the F77 compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_F77" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code="\
-      program t
-      end
-"
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  _LT_TAG_COMPILER
-
-  # save warnings/boilerplate of simple test code
-  _LT_COMPILER_BOILERPLATE
-  _LT_LINKER_BOILERPLATE
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
-  lt_save_GCC=$GCC
-  CC=${F77-"f77"}
-  compiler=$CC
-  _LT_TAGVAR(compiler, $1)=$CC
-  _LT_CC_BASENAME([$compiler])
-  GCC=$G77
-  if test -n "$compiler"; then
-    AC_MSG_CHECKING([if libtool supports shared libraries])
-    AC_MSG_RESULT([$can_build_shared])
-
-    AC_MSG_CHECKING([whether to build shared libraries])
-    test "$can_build_shared" = "no" && enable_shared=no
-
-    # On AIX, shared libraries and static libraries use the same namespace, and
-    # are all built from PIC.
-    case $host_os in
-      aix3*)
-        test "$enable_shared" = yes && enable_static=no
-        if test -n "$RANLIB"; then
-          archive_cmds="$archive_cmds~\$RANLIB \$lib"
-          postinstall_cmds='$RANLIB $lib'
-        fi
-        ;;
-      aix[[4-9]]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
-	fi
-        ;;
-    esac
-    AC_MSG_RESULT([$enable_shared])
-
-    AC_MSG_CHECKING([whether to build static libraries])
-    # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
-    AC_MSG_RESULT([$enable_static])
-
-    _LT_TAGVAR(GCC, $1)="$G77"
-    _LT_TAGVAR(LD, $1)="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    _LT_COMPILER_PIC($1)
-    _LT_COMPILER_C_O($1)
-    _LT_COMPILER_FILE_LOCKS($1)
-    _LT_LINKER_SHLIBS($1)
-    _LT_SYS_DYNAMIC_LINKER($1)
-    _LT_LINKER_HARDCODE_LIBPATH($1)
-
-    _LT_CONFIG($1)
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC="$lt_save_CC"
-fi # test "$_lt_disable_F77" != yes
-
-AC_LANG_POP
-])# _LT_LANG_F77_CONFIG
-
-
-# _LT_PROG_FC
-# -----------
-# Since AC_PROG_FC is broken, in that it returns the empty string
-# if there is no fortran compiler, we have our own version here.
-m4_defun([_LT_PROG_FC],
-[
-pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes])
-AC_PROG_FC
-if test -z "$FC" || test "X$FC" = "Xno"; then
-  _lt_disable_FC=yes
-fi
-popdef([AC_MSG_ERROR])
-])# _LT_PROG_FC
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([_LT_PROG_FC], [])
-
-
-# _LT_LANG_FC_CONFIG([TAG])
-# -------------------------
-# Ensure that the configuration variables for a Fortran compiler are
-# suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_FC_CONFIG],
-[AC_REQUIRE([_LT_PROG_FC])dnl
-AC_LANG_PUSH(Fortran)
-
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for fc test sources.
-ac_ext=${ac_fc_srcext-f}
-
-# Object file extension for compiled fc test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the FC compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_FC" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code="\
-      program t
-      end
-"
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  _LT_TAG_COMPILER
-
-  # save warnings/boilerplate of simple test code
-  _LT_COMPILER_BOILERPLATE
-  _LT_LINKER_BOILERPLATE
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
-  lt_save_GCC=$GCC
-  CC=${FC-"f95"}
-  compiler=$CC
-  GCC=$ac_cv_fc_compiler_gnu
-
-  _LT_TAGVAR(compiler, $1)=$CC
-  _LT_CC_BASENAME([$compiler])
-
-  if test -n "$compiler"; then
-    AC_MSG_CHECKING([if libtool supports shared libraries])
-    AC_MSG_RESULT([$can_build_shared])
-
-    AC_MSG_CHECKING([whether to build shared libraries])
-    test "$can_build_shared" = "no" && enable_shared=no
-
-    # On AIX, shared libraries and static libraries use the same namespace, and
-    # are all built from PIC.
-    case $host_os in
-      aix3*)
-        test "$enable_shared" = yes && enable_static=no
-        if test -n "$RANLIB"; then
-          archive_cmds="$archive_cmds~\$RANLIB \$lib"
-          postinstall_cmds='$RANLIB $lib'
-        fi
-        ;;
-      aix[[4-9]]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
-	fi
-        ;;
-    esac
-    AC_MSG_RESULT([$enable_shared])
-
-    AC_MSG_CHECKING([whether to build static libraries])
-    # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
-    AC_MSG_RESULT([$enable_static])
-
-    _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
-    _LT_TAGVAR(LD, $1)="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    _LT_SYS_HIDDEN_LIBDEPS($1)
-    _LT_COMPILER_PIC($1)
-    _LT_COMPILER_C_O($1)
-    _LT_COMPILER_FILE_LOCKS($1)
-    _LT_LINKER_SHLIBS($1)
-    _LT_SYS_DYNAMIC_LINKER($1)
-    _LT_LINKER_HARDCODE_LIBPATH($1)
-
-    _LT_CONFIG($1)
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC="$lt_save_CC"
-fi # test "$_lt_disable_FC" != yes
-
-AC_LANG_POP
-])# _LT_LANG_FC_CONFIG
-
-
-# _LT_LANG_GCJ_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for the GNU Java Compiler compiler
-# are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_GCJ_CONFIG],
-[AC_REQUIRE([LT_PROG_GCJ])dnl
-AC_LANG_SAVE
-
-# Source file extension for Java test sources.
-ac_ext=java
-
-# Object file extension for compiled Java test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="class foo {}"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_TAG_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
-lt_save_GCC=$GCC
-GCC=yes
-CC=${GCJ-"gcj"}
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_TAGVAR(LD, $1)="$LD"
-_LT_CC_BASENAME([$compiler])
-
-# GCJ did not exist at the time GCC didn't implicitly link libc in.
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-
-if test -n "$compiler"; then
-  _LT_COMPILER_NO_RTTI($1)
-  _LT_COMPILER_PIC($1)
-  _LT_COMPILER_C_O($1)
-  _LT_COMPILER_FILE_LOCKS($1)
-  _LT_LINKER_SHLIBS($1)
-  _LT_LINKER_HARDCODE_LIBPATH($1)
-
-  _LT_CONFIG($1)
-fi
-
-AC_LANG_RESTORE
-
-GCC=$lt_save_GCC
-CC="$lt_save_CC"
-])# _LT_LANG_GCJ_CONFIG
-
-
-# _LT_LANG_RC_CONFIG([TAG])
-# -------------------------
-# Ensure that the configuration variables for the Windows resource compiler
-# are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_RC_CONFIG],
-[AC_REQUIRE([LT_PROG_RC])dnl
-AC_LANG_SAVE
-
-# Source file extension for RC test sources.
-ac_ext=rc
-
-# Object file extension for compiled RC test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
-
-# Code to be used in simple link tests
-lt_simple_link_test_code="$lt_simple_compile_test_code"
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_TAG_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
-lt_save_GCC=$GCC
-GCC=
-CC=${RC-"windres"}
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_CC_BASENAME([$compiler])
-_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-
-if test -n "$compiler"; then
-  :
-  _LT_CONFIG($1)
-fi
-
-GCC=$lt_save_GCC
-AC_LANG_RESTORE
-CC="$lt_save_CC"
-])# _LT_LANG_RC_CONFIG
-
-
-# LT_PROG_GCJ
-# -----------
-AC_DEFUN([LT_PROG_GCJ],
-[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
-  [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
-    [AC_CHECK_TOOL(GCJ, gcj,)
-      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
-      AC_SUBST(GCJFLAGS)])])[]dnl
-])
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
-
-
-# LT_PROG_RC
-# ----------
-AC_DEFUN([LT_PROG_RC],
-[AC_CHECK_TOOL(RC, windres,)
-])
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_RC], [])
-
-
-# _LT_DECL_EGREP
-# --------------
-# If we don't have a new enough Autoconf to choose the best grep
-# available, choose the one first in the user's PATH.
-m4_defun([_LT_DECL_EGREP],
-[AC_REQUIRE([AC_PROG_EGREP])dnl
-AC_REQUIRE([AC_PROG_FGREP])dnl
-test -z "$GREP" && GREP=grep
-_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
-_LT_DECL([], [EGREP], [1], [An ERE matcher])
-_LT_DECL([], [FGREP], [1], [A literal string matcher])
-dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
-AC_SUBST([GREP])
-])
-
-
-# _LT_DECL_OBJDUMP
-# --------------
-# If we don't have a new enough Autoconf to choose the best objdump
-# available, choose the one first in the user's PATH.
-m4_defun([_LT_DECL_OBJDUMP],
-[AC_CHECK_TOOL(OBJDUMP, objdump, false)
-test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
-AC_SUBST([OBJDUMP])
-])
-
-
-# _LT_DECL_SED
-# ------------
-# Check for a fully-functional sed program, that truncates
-# as few characters as possible.  Prefer GNU sed if found.
-m4_defun([_LT_DECL_SED],
-[AC_PROG_SED
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
-_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
-    [Sed that helps us avoid accidentally triggering echo(1) options like -n])
-])# _LT_DECL_SED
-
-m4_ifndef([AC_PROG_SED], [
-# NOTE: This macro has been submitted for inclusion into   #
-#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
-#  a released version of Autoconf we should remove this    #
-#  macro and use it instead.                               #
-
-m4_defun([AC_PROG_SED],
-[AC_MSG_CHECKING([for a sed that does not truncate output])
-AC_CACHE_VAL(lt_cv_path_SED,
-[# Loop through the user's path and test for sed and gsed.
-# Then use that list of sed's as ones to test for truncation.
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for lt_ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
-        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
-      fi
-    done
-  done
-done
-IFS=$as_save_IFS
-lt_ac_max=0
-lt_ac_count=0
-# Add /usr/xpg4/bin/sed as it is typically found on Solaris
-# along with /bin/sed that truncates output.
-for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
-  test ! -f $lt_ac_sed && continue
-  cat /dev/null > conftest.in
-  lt_ac_count=0
-  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
-  # Check for GNU sed and select it if it is found.
-  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
-    lt_cv_path_SED=$lt_ac_sed
-    break
-  fi
-  while true; do
-    cat conftest.in conftest.in >conftest.tmp
-    mv conftest.tmp conftest.in
-    cp conftest.in conftest.nl
-    echo >>conftest.nl
-    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
-    cmp -s conftest.out conftest.nl || break
-    # 10000 chars as input seems more than enough
-    test $lt_ac_count -gt 10 && break
-    lt_ac_count=`expr $lt_ac_count + 1`
-    if test $lt_ac_count -gt $lt_ac_max; then
-      lt_ac_max=$lt_ac_count
-      lt_cv_path_SED=$lt_ac_sed
-    fi
-  done
-done
-])
-SED=$lt_cv_path_SED
-AC_SUBST([SED])
-AC_MSG_RESULT([$SED])
-])#AC_PROG_SED
-])#m4_ifndef
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_SED], [])
-
-
-# _LT_CHECK_SHELL_FEATURES
-# ------------------------
-# Find out whether the shell is Bourne or XSI compatible,
-# or has some other useful features.
-m4_defun([_LT_CHECK_SHELL_FEATURES],
-[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
-  test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
-      = c,a/b,, \
-    && eval 'test $(( 1 + 1 )) -eq 2 \
-    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
-  && xsi_shell=yes
-AC_MSG_RESULT([$xsi_shell])
-_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
-
-AC_MSG_CHECKING([whether the shell understands "+="])
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
-    >/dev/null 2>&1 \
-  && lt_shell_append=yes
-AC_MSG_RESULT([$lt_shell_append])
-_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  lt_unset=unset
-else
-  lt_unset=false
-fi
-_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
-
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
-    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
-  lt_SP2NL='tr \040 \012'
-  lt_NL2SP='tr \015\012 \040\040'
-  ;;
- *) # EBCDIC based system
-  lt_SP2NL='tr \100 \n'
-  lt_NL2SP='tr \r\n \100\100'
-  ;;
-esac
-_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
-_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
-])# _LT_CHECK_SHELL_FEATURES
-
-
-# _LT_PROG_XSI_SHELLFNS
-# ---------------------
-# Bourne and XSI compatible variants of some useful shell functions.
-m4_defun([_LT_PROG_XSI_SHELLFNS],
-[case $xsi_shell in
-  yes)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
-  case ${1} in
-    */*) func_dirname_result="${1%/*}${2}" ;;
-    *  ) func_dirname_result="${3}" ;;
-  esac
-}
-
-# func_basename file
-func_basename ()
-{
-  func_basename_result="${1##*/}"
-}
-
-# func_dirname_and_basename file append nondir_replacement
-# perform func_basename and func_dirname in a single function
-# call:
-#   dirname:  Compute the dirname of FILE.  If nonempty,
-#             add APPEND to the result, otherwise set result
-#             to NONDIR_REPLACEMENT.
-#             value returned in "$func_dirname_result"
-#   basename: Compute filename of FILE.
-#             value retuned in "$func_basename_result"
-# Implementation must be kept synchronized with func_dirname
-# and func_basename. For efficiency, we do not delegate to
-# those functions but instead duplicate the functionality here.
-func_dirname_and_basename ()
-{
-  case ${1} in
-    */*) func_dirname_result="${1%/*}${2}" ;;
-    *  ) func_dirname_result="${3}" ;;
-  esac
-  func_basename_result="${1##*/}"
-}
-
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-func_stripname ()
-{
-  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-  # positional parameters, so assign one to ordinary parameter first.
-  func_stripname_result=${3}
-  func_stripname_result=${func_stripname_result#"${1}"}
-  func_stripname_result=${func_stripname_result%"${2}"}
-}
-
-# func_opt_split
-func_opt_split ()
-{
-  func_opt_split_opt=${1%%=*}
-  func_opt_split_arg=${1#*=}
-}
-
-# func_lo2o object
-func_lo2o ()
-{
-  case ${1} in
-    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-    *)    func_lo2o_result=${1} ;;
-  esac
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
-  func_xform_result=${1%.*}.lo
-}
-
-# func_arith arithmetic-term...
-func_arith ()
-{
-  func_arith_result=$(( $[*] ))
-}
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
-  func_len_result=${#1}
-}
-
-_LT_EOF
-    ;;
-  *) # Bourne compatible functions.
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
-  # Extract subdirectory from the argument.
-  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
-  if test "X$func_dirname_result" = "X${1}"; then
-    func_dirname_result="${3}"
-  else
-    func_dirname_result="$func_dirname_result${2}"
-  fi
-}
-
-# func_basename file
-func_basename ()
-{
-  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
-}
-
-dnl func_dirname_and_basename
-dnl A portable version of this function is already defined in general.m4sh
-dnl so there is no need for it here.
-
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-# func_strip_suffix prefix name
-func_stripname ()
-{
-  case ${2} in
-    .*) func_stripname_result=`$ECHO "X${3}" \
-           | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
-    *)  func_stripname_result=`$ECHO "X${3}" \
-           | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
-  esac
-}
-
-# sed scripts:
-my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q'
-my_sed_long_arg='1s/^-[[^=]]*=//'
-
-# func_opt_split
-func_opt_split ()
-{
-  func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
-  func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
-}
-
-# func_lo2o object
-func_lo2o ()
-{
-  func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
-  func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'`
-}
-
-# func_arith arithmetic-term...
-func_arith ()
-{
-  func_arith_result=`expr "$[@]"`
-}
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
-  func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len`
-}
-
-_LT_EOF
-esac
-
-case $lt_shell_append in
-  yes)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
-  eval "$[1]+=\$[2]"
-}
-_LT_EOF
-    ;;
-  *)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
-  eval "$[1]=\$$[1]\$[2]"
-}
-
-_LT_EOF
-    ;;
-  esac
-])
-
-# Helper functions for option handling.                    -*- Autoconf -*-
-#
-#   Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
-#   Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 6 ltoptions.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
-
-
-# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
-# ------------------------------------------
-m4_define([_LT_MANGLE_OPTION],
-[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
-
-
-# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
-# ---------------------------------------
-# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
-# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
-# saved as a flag.
-m4_define([_LT_SET_OPTION],
-[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
-m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
-        _LT_MANGLE_DEFUN([$1], [$2]),
-    [m4_warning([Unknown $1 option `$2'])])[]dnl
-])
-
-
-# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
-# ------------------------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-m4_define([_LT_IF_OPTION],
-[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
-
-
-# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
-# -------------------------------------------------------
-# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
-# are set.
-m4_define([_LT_UNLESS_OPTIONS],
-[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
-	    [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
-		      [m4_define([$0_found])])])[]dnl
-m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
-])[]dnl
-])
-
-
-# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
-# ----------------------------------------
-# OPTION-LIST is a space-separated list of Libtool options associated
-# with MACRO-NAME.  If any OPTION has a matching handler declared with
-# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
-# the unknown option and exit.
-m4_defun([_LT_SET_OPTIONS],
-[# Set options
-m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
-    [_LT_SET_OPTION([$1], _LT_Option)])
-
-m4_if([$1],[LT_INIT],[
-  dnl
-  dnl Simply set some default values (i.e off) if boolean options were not
-  dnl specified:
-  _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
-  ])
-  _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
-  ])
-  dnl
-  dnl If no reference was made to various pairs of opposing options, then
-  dnl we run the default mode handler for the pair.  For example, if neither
-  dnl `shared' nor `disable-shared' was passed, we enable building of shared
-  dnl archives by default:
-  _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
-  _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
-  _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
-  _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
-  		   [_LT_ENABLE_FAST_INSTALL])
-  ])
-])# _LT_SET_OPTIONS
-
-
-
-# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
-# -----------------------------------------
-m4_define([_LT_MANGLE_DEFUN],
-[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
-
-
-# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
-# -----------------------------------------------
-m4_define([LT_OPTION_DEFINE],
-[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
-])# LT_OPTION_DEFINE
-
-
-# dlopen
-# ------
-LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
-])
-
-AU_DEFUN([AC_LIBTOOL_DLOPEN],
-[_LT_SET_OPTION([LT_INIT], [dlopen])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `dlopen' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
-
-
-# win32-dll
-# ---------
-# Declare package support for building win32 dll's.
-LT_OPTION_DEFINE([LT_INIT], [win32-dll],
-[enable_win32_dll=yes
-
-case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*)
-  AC_CHECK_TOOL(AS, as, false)
-  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
-  AC_CHECK_TOOL(OBJDUMP, objdump, false)
-  ;;
-esac
-
-test -z "$AS" && AS=as
-_LT_DECL([], [AS],      [0], [Assembler program])dnl
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl
-])# win32-dll
-
-AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-_LT_SET_OPTION([LT_INIT], [win32-dll])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `win32-dll' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
-
-
-# _LT_ENABLE_SHARED([DEFAULT])
-# ----------------------------
-# implement the --enable-shared flag, and supports the `shared' and
-# `disable-shared' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_SHARED],
-[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([shared],
-    [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
-	[build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_shared=yes ;;
-    no) enable_shared=no ;;
-    *)
-      enable_shared=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_shared=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
-
-    _LT_DECL([build_libtool_libs], [enable_shared], [0],
-	[Whether or not to build shared libraries])
-])# _LT_ENABLE_SHARED
-
-LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
-
-# Old names:
-AC_DEFUN([AC_ENABLE_SHARED],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
-])
-
-AC_DEFUN([AC_DISABLE_SHARED],
-[_LT_SET_OPTION([LT_INIT], [disable-shared])
-])
-
-AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
-AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_ENABLE_SHARED], [])
-dnl AC_DEFUN([AM_DISABLE_SHARED], [])
-
-
-
-# _LT_ENABLE_STATIC([DEFAULT])
-# ----------------------------
-# implement the --enable-static flag, and support the `static' and
-# `disable-static' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_STATIC],
-[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([static],
-    [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
-	[build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_static=yes ;;
-    no) enable_static=no ;;
-    *)
-     enable_static=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_static=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
-
-    _LT_DECL([build_old_libs], [enable_static], [0],
-	[Whether or not to build static libraries])
-])# _LT_ENABLE_STATIC
-
-LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
-
-# Old names:
-AC_DEFUN([AC_ENABLE_STATIC],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
-])
-
-AC_DEFUN([AC_DISABLE_STATIC],
-[_LT_SET_OPTION([LT_INIT], [disable-static])
-])
-
-AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
-AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_ENABLE_STATIC], [])
-dnl AC_DEFUN([AM_DISABLE_STATIC], [])
-
-
-
-# _LT_ENABLE_FAST_INSTALL([DEFAULT])
-# ----------------------------------
-# implement the --enable-fast-install flag, and support the `fast-install'
-# and `disable-fast-install' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_FAST_INSTALL],
-[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([fast-install],
-    [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
-    [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_fast_install=yes ;;
-    no) enable_fast_install=no ;;
-    *)
-      enable_fast_install=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_fast_install=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
-
-_LT_DECL([fast_install], [enable_fast_install], [0],
-	 [Whether or not to optimize for fast installation])dnl
-])# _LT_ENABLE_FAST_INSTALL
-
-LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
-
-# Old names:
-AU_DEFUN([AC_ENABLE_FAST_INSTALL],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `fast-install' option into LT_INIT's first parameter.])
-])
-
-AU_DEFUN([AC_DISABLE_FAST_INSTALL],
-[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `disable-fast-install' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
-dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
-
-
-# _LT_WITH_PIC([MODE])
-# --------------------
-# implement the --with-pic flag, and support the `pic-only' and `no-pic'
-# LT_INIT options.
-# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
-m4_define([_LT_WITH_PIC],
-[AC_ARG_WITH([pic],
-    [AS_HELP_STRING([--with-pic],
-	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
-    [pic_mode="$withval"],
-    [pic_mode=default])
-
-test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
-
-_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
-])# _LT_WITH_PIC
-
-LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
-LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
-
-# Old name:
-AU_DEFUN([AC_LIBTOOL_PICMODE],
-[_LT_SET_OPTION([LT_INIT], [pic-only])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `pic-only' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
-
-
-m4_define([_LTDL_MODE], [])
-LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
-		 [m4_define([_LTDL_MODE], [nonrecursive])])
-LT_OPTION_DEFINE([LTDL_INIT], [recursive],
-		 [m4_define([_LTDL_MODE], [recursive])])
-LT_OPTION_DEFINE([LTDL_INIT], [subproject],
-		 [m4_define([_LTDL_MODE], [subproject])])
-
-m4_define([_LTDL_TYPE], [])
-LT_OPTION_DEFINE([LTDL_INIT], [installable],
-		 [m4_define([_LTDL_TYPE], [installable])])
-LT_OPTION_DEFINE([LTDL_INIT], [convenience],
-		 [m4_define([_LTDL_TYPE], [convenience])])
-
-# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
-#
-# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
-# Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 6 ltsugar.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
-
-
-# lt_join(SEP, ARG1, [ARG2...])
-# -----------------------------
-# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
-# associated separator.
-# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
-# versions in m4sugar had bugs.
-m4_define([lt_join],
-[m4_if([$#], [1], [],
-       [$#], [2], [[$2]],
-       [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
-m4_define([_lt_join],
-[m4_if([$#$2], [2], [],
-       [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
-
-
-# lt_car(LIST)
-# lt_cdr(LIST)
-# ------------
-# Manipulate m4 lists.
-# These macros are necessary as long as will still need to support
-# Autoconf-2.59 which quotes differently.
-m4_define([lt_car], [[$1]])
-m4_define([lt_cdr],
-[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
-       [$#], 1, [],
-       [m4_dquote(m4_shift($@))])])
-m4_define([lt_unquote], $1)
-
-
-# lt_append(MACRO-NAME, STRING, [SEPARATOR])
-# ------------------------------------------
-# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
-# Note that neither SEPARATOR nor STRING are expanded; they are appended
-# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
-# No SEPARATOR is output if MACRO-NAME was previously undefined (different
-# than defined and empty).
-#
-# This macro is needed until we can rely on Autoconf 2.62, since earlier
-# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
-m4_define([lt_append],
-[m4_define([$1],
-	   m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
-
-
-
-# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
-# ----------------------------------------------------------
-# Produce a SEP delimited list of all paired combinations of elements of
-# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
-# has the form PREFIXmINFIXSUFFIXn.
-# Needed until we can rely on m4_combine added in Autoconf 2.62.
-m4_define([lt_combine],
-[m4_if(m4_eval([$# > 3]), [1],
-       [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
-[[m4_foreach([_Lt_prefix], [$2],
-	     [m4_foreach([_Lt_suffix],
-		]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
-	[_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
-
-
-# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
-# -----------------------------------------------------------------------
-# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
-# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
-m4_define([lt_if_append_uniq],
-[m4_ifdef([$1],
-	  [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
-		 [lt_append([$1], [$2], [$3])$4],
-		 [$5])],
-	  [lt_append([$1], [$2], [$3])$4])])
-
-
-# lt_dict_add(DICT, KEY, VALUE)
-# -----------------------------
-m4_define([lt_dict_add],
-[m4_define([$1($2)], [$3])])
-
-
-# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
-# --------------------------------------------
-m4_define([lt_dict_add_subkey],
-[m4_define([$1($2:$3)], [$4])])
-
-
-# lt_dict_fetch(DICT, KEY, [SUBKEY])
-# ----------------------------------
-m4_define([lt_dict_fetch],
-[m4_ifval([$3],
-	m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
-    m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
-
-
-# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
-# -----------------------------------------------------------------
-m4_define([lt_if_dict_fetch],
-[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
-	[$5],
-    [$6])])
-
-
-# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
-# --------------------------------------------------------------
-m4_define([lt_dict_filter],
-[m4_if([$5], [], [],
-  [lt_join(m4_quote(m4_default([$4], [[, ]])),
-           lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
-		      [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
-])
-
-# ltversion.m4 -- version numbers			-*- Autoconf -*-
-#
-#   Copyright (C) 2004 Free Software Foundation, Inc.
-#   Written by Scott James Remnant, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# Generated from ltversion.in.
-
-# serial 3012 ltversion.m4
-# This file is part of GNU Libtool
-
-m4_define([LT_PACKAGE_VERSION], [2.2.6])
-m4_define([LT_PACKAGE_REVISION], [1.3012])
-
-AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.2.6'
-macro_revision='1.3012'
-_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
-_LT_DECL(, macro_revision, 0)
-])
-
-# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
-#
-#   Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
-#   Written by Scott James Remnant, 2004.
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 4 lt~obsolete.m4
-
-# These exist entirely to fool aclocal when bootstrapping libtool.
-#
-# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
-# which have later been changed to m4_define as they aren't part of the
-# exported API, or moved to Autoconf or Automake where they belong.
-#
-# The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
-# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
-# using a macro with the same name in our local m4/libtool.m4 it'll
-# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
-# and doesn't know about Autoconf macros at all.)
-#
-# So we provide this file, which has a silly filename so it's always
-# included after everything else.  This provides aclocal with the
-# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
-# because those macros already exist, or will be overwritten later.
-# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. 
-#
-# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
-# Yes, that means every name once taken will need to remain here until
-# we give up compatibility with versions before 1.7, at which point
-# we need to keep only those names which we still refer to.
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
-
-m4_ifndef([AC_LIBTOOL_LINKER_OPTION],	[AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
-m4_ifndef([AC_PROG_EGREP],		[AC_DEFUN([AC_PROG_EGREP])])
-m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
-m4_ifndef([_LT_AC_SHELL_INIT],		[AC_DEFUN([_LT_AC_SHELL_INIT])])
-m4_ifndef([_LT_AC_SYS_LIBPATH_AIX],	[AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
-m4_ifndef([_LT_PROG_LTMAIN],		[AC_DEFUN([_LT_PROG_LTMAIN])])
-m4_ifndef([_LT_AC_TAGVAR],		[AC_DEFUN([_LT_AC_TAGVAR])])
-m4_ifndef([AC_LTDL_ENABLE_INSTALL],	[AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
-m4_ifndef([AC_LTDL_PREOPEN],		[AC_DEFUN([AC_LTDL_PREOPEN])])
-m4_ifndef([_LT_AC_SYS_COMPILER],	[AC_DEFUN([_LT_AC_SYS_COMPILER])])
-m4_ifndef([_LT_AC_LOCK],		[AC_DEFUN([_LT_AC_LOCK])])
-m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE],	[AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
-m4_ifndef([_LT_AC_TRY_DLOPEN_SELF],	[AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
-m4_ifndef([AC_LIBTOOL_PROG_CC_C_O],	[AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
-m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
-m4_ifndef([AC_LIBTOOL_OBJDIR],		[AC_DEFUN([AC_LIBTOOL_OBJDIR])])
-m4_ifndef([AC_LTDL_OBJDIR],		[AC_DEFUN([AC_LTDL_OBJDIR])])
-m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
-m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP],	[AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
-m4_ifndef([AC_PATH_MAGIC],		[AC_DEFUN([AC_PATH_MAGIC])])
-m4_ifndef([AC_PROG_LD_GNU],		[AC_DEFUN([AC_PROG_LD_GNU])])
-m4_ifndef([AC_PROG_LD_RELOAD_FLAG],	[AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
-m4_ifndef([AC_DEPLIBS_CHECK_METHOD],	[AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
-m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
-m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS],	[AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
-m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP],	[AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
-m4_ifndef([LT_AC_PROG_EGREP],		[AC_DEFUN([LT_AC_PROG_EGREP])])
-m4_ifndef([LT_AC_PROG_SED],		[AC_DEFUN([LT_AC_PROG_SED])])
-m4_ifndef([_LT_CC_BASENAME],		[AC_DEFUN([_LT_CC_BASENAME])])
-m4_ifndef([_LT_COMPILER_BOILERPLATE],	[AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
-m4_ifndef([_LT_LINKER_BOILERPLATE],	[AC_DEFUN([_LT_LINKER_BOILERPLATE])])
-m4_ifndef([_AC_PROG_LIBTOOL],		[AC_DEFUN([_AC_PROG_LIBTOOL])])
-m4_ifndef([AC_LIBTOOL_SETUP],		[AC_DEFUN([AC_LIBTOOL_SETUP])])
-m4_ifndef([_LT_AC_CHECK_DLFCN],		[AC_DEFUN([_LT_AC_CHECK_DLFCN])])
-m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER],	[AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
-m4_ifndef([_LT_AC_TAGCONFIG],		[AC_DEFUN([_LT_AC_TAGCONFIG])])
-m4_ifndef([AC_DISABLE_FAST_INSTALL],	[AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
-m4_ifndef([_LT_AC_LANG_CXX],		[AC_DEFUN([_LT_AC_LANG_CXX])])
-m4_ifndef([_LT_AC_LANG_F77],		[AC_DEFUN([_LT_AC_LANG_F77])])
-m4_ifndef([_LT_AC_LANG_GCJ],		[AC_DEFUN([_LT_AC_LANG_GCJ])])
-m4_ifndef([AC_LIBTOOL_RC],		[AC_DEFUN([AC_LIBTOOL_RC])])
-m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
-m4_ifndef([_LT_AC_LANG_C_CONFIG],	[AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
-m4_ifndef([_LT_AC_LANG_CXX_CONFIG],	[AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
-m4_ifndef([_LT_AC_LANG_F77_CONFIG],	[AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
-m4_ifndef([_LT_AC_LANG_GCJ_CONFIG],	[AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
-m4_ifndef([_LT_AC_LANG_RC_CONFIG],	[AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
-m4_ifndef([AC_LIBTOOL_CONFIG],		[AC_DEFUN([AC_LIBTOOL_CONFIG])])
-m4_ifndef([_LT_AC_FILE_LTDLL_C],	[AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
-
-# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_AUTOMAKE_VERSION(VERSION)
-# ----------------------------
-# Automake X.Y traces this macro to ensure aclocal.m4 has been
-# generated from the m4 files accompanying Automake X.Y.
-# (This private macro should not be called outside this file.)
-AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.10'
-dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
-dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.10.2], [],
-      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
-])
-
-# _AM_AUTOCONF_VERSION(VERSION)
-# -----------------------------
-# aclocal traces this macro to find the Autoconf version.
-# This is a private macro too.  Using m4_define simplifies
-# the logic in aclocal, which can simply ignore this definition.
-m4_define([_AM_AUTOCONF_VERSION], [])
-
-# AM_SET_CURRENT_AUTOMAKE_VERSION
-# -------------------------------
-# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
-# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
-AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.10.2])dnl
-m4_ifndef([AC_AUTOCONF_VERSION],
-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
-
-# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
-
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
-# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
-#
-# Of course, Automake must honor this variable whenever it calls a
-# tool from the auxiliary directory.  The problem is that $srcdir (and
-# therefore $ac_aux_dir as well) can be either absolute or relative,
-# depending on how configure is run.  This is pretty annoying, since
-# it makes $ac_aux_dir quite unusable in subdirectories: in the top
-# source directory, any form will work fine, but in subdirectories a
-# relative path needs to be adjusted first.
-#
-# $ac_aux_dir/missing
-#    fails when called from a subdirectory if $ac_aux_dir is relative
-# $top_srcdir/$ac_aux_dir/missing
-#    fails if $ac_aux_dir is absolute,
-#    fails when called from a subdirectory in a VPATH build with
-#          a relative $ac_aux_dir
-#
-# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
-# are both prefixed by $srcdir.  In an in-source build this is usually
-# harmless because $srcdir is `.', but things will broke when you
-# start a VPATH build or use an absolute $srcdir.
-#
-# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
-# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
-#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
-# and then we would define $MISSING as
-#   MISSING="\${SHELL} $am_aux_dir/missing"
-# This will work as long as MISSING is not called from configure, because
-# unfortunately $(top_srcdir) has no meaning in configure.
-# However there are other variables, like CC, which are often used in
-# configure, and could therefore not use this "fixed" $ac_aux_dir.
-#
-# Another solution, used here, is to always expand $ac_aux_dir to an
-# absolute PATH.  The drawback is that using absolute paths prevent a
-# configured tree to be moved without reconfiguration.
-
-AC_DEFUN([AM_AUX_DIR_EXPAND],
-[dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-])
-
-# AM_CONDITIONAL                                            -*- Autoconf -*-
-
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 8
-
-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
-# -------------------------------------
-# Define a conditional.
-AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ(2.52)dnl
- ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
-	[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-AC_SUBST([$1_TRUE])dnl
-AC_SUBST([$1_FALSE])dnl
-_AM_SUBST_NOTMAKE([$1_TRUE])dnl
-_AM_SUBST_NOTMAKE([$1_FALSE])dnl
-if $2; then
-  $1_TRUE=
-  $1_FALSE='#'
-else
-  $1_TRUE='#'
-  $1_FALSE=
-fi
-AC_CONFIG_COMMANDS_PRE(
-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
-  AC_MSG_ERROR([[conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.]])
-fi])])
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 9
-
-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
-# written in clear, in which case automake, when reading aclocal.m4,
-# will think it sees a *use*, and therefore will trigger all it's
-# C support machinery.  Also note that it means that autoscan, seeing
-# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
-
-
-# _AM_DEPENDENCIES(NAME)
-# ----------------------
-# See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "GCJ", or "OBJC".
-# We try a few techniques and use that to set a single cache variable.
-#
-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
-# dependency, and given that the user is not expected to run this macro,
-# just rely on AC_PROG_CC.
-AC_DEFUN([_AM_DEPENDENCIES],
-[AC_REQUIRE([AM_SET_DEPDIR])dnl
-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
-AC_REQUIRE([AM_MAKE_INCLUDE])dnl
-AC_REQUIRE([AM_DEP_TRACK])dnl
-
-ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
-       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
-       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
-       [$1], UPC,  [depcc="$UPC"  am_compiler_list=],
-       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
-                   [depcc="$$1"   am_compiler_list=])
-
-AC_CACHE_CHECK([dependency style of $depcc],
-               [am_cv_$1_dependencies_compiler_type],
-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_$1_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
-  fi
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    case $depmode in
-    nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
-      if test "x$enable_dependency_tracking" = xyes; then
-	continue
-      else
-	break
-      fi
-      ;;
-    none) break ;;
-    esac
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.
-    if depmode=$depmode \
-       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_$1_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_$1_dependencies_compiler_type=none
-fi
-])
-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
-AM_CONDITIONAL([am__fastdep$1], [
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
-])
-
-
-# AM_SET_DEPDIR
-# -------------
-# Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES
-AC_DEFUN([AM_SET_DEPDIR],
-[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
-])
-
-
-# AM_DEP_TRACK
-# ------------
-AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE(dependency-tracking,
-[  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors])
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-fi
-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-AC_SUBST([AMDEPBACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
-])
-
-# Generate code to set up dependency tracking.              -*- Autoconf -*-
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-#serial 5
-
-# _AM_OUTPUT_DEPENDENCY_COMMANDS
-# ------------------------------
-AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[{
-  # Autoconf 2.62 quotes --file arguments for eval, but not when files
-  # are listed without --file.  Let's play safe and only enable the eval
-  # if we detect the quoting.
-  case $CONFIG_FILES in
-  *\'*) eval set x "$CONFIG_FILES" ;;
-  *)   set x $CONFIG_FILES ;;
-  esac
-  shift
-  for mf
-  do
-    # Strip MF so we end up with the name of the file.
-    mf=`echo "$mf" | sed -e 's/:.*$//'`
-    # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named `Makefile.in', but
-    # some people rename them; so instead we look at the file content.
-    # Grep'ing the first line is not enough: some people post-process
-    # each Makefile.in and add a new line on top of each file to say so.
-    # Grep'ing the whole file is not good either: AIX grep has a line
-    # limit of 2048, but all sed's we know have understand at least 4000.
-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-      dirpart=`AS_DIRNAME("$mf")`
-    else
-      continue
-    fi
-    # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running `make'.
-    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-    test -z "$DEPDIR" && continue
-    am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "am__include" && continue
-    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # When using ansi2knr, U may be empty or an underscore; expand it
-    U=`sed -n 's/^U = //p' < "$mf"`
-    # Find all dependency output files, they are included files with
-    # $(DEPDIR) in their names.  We invoke sed twice because it is the
-    # simplest approach to changing $(DEPDIR) to its actual value in the
-    # expansion.
-    for file in `sed -n "
-      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
-      # Make sure the directory exists.
-      test -f "$dirpart/$file" && continue
-      fdir=`AS_DIRNAME(["$file"])`
-      AS_MKDIR_P([$dirpart/$fdir])
-      # echo "creating $dirpart/$file"
-      echo '# dummy' > "$dirpart/$file"
-    done
-  done
-}
-])# _AM_OUTPUT_DEPENDENCY_COMMANDS
-
-
-# AM_OUTPUT_DEPENDENCY_COMMANDS
-# -----------------------------
-# This macro should only be invoked once -- use via AC_REQUIRE.
-#
-# This code is only required when automatic dependency tracking
-# is enabled.  FIXME.  This creates each `.P' file that we will
-# need in order to bootstrap the dependency handling code.
-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
-[AC_CONFIG_COMMANDS([depfiles],
-     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
-     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
-])
-
-# Do all the work for Automake.                             -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2008 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 13
-
-# This macro actually does too much.  Some checks are only needed if
-# your package does certain things.  But this isn't really a big deal.
-
-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
-# AM_INIT_AUTOMAKE([OPTIONS])
-# -----------------------------------------------
-# The call with PACKAGE and VERSION arguments is the old style
-# call (pre autoconf-2.50), which is being phased out.  PACKAGE
-# and VERSION should now be passed to AC_INIT and removed from
-# the call to AM_INIT_AUTOMAKE.
-# We support both call styles for the transition.  After
-# the next Automake release, Autoconf can make the AC_INIT
-# arguments mandatory, and then we can depend on a new Autoconf
-# release and drop the old call support.
-AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.60])dnl
-dnl Autoconf wants to disallow AM_ names.  We explicitly allow
-dnl the ones we care about.
-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
-AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
-AC_REQUIRE([AC_PROG_INSTALL])dnl
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-  # is not polluted with repeated "-I."
-  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
-  # test to see if srcdir already configured
-  if test -f $srcdir/config.status; then
-    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
-  fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-AC_SUBST([CYGPATH_W])
-
-# Define the identity of the package.
-dnl Distinguish between old-style and new-style calls.
-m4_ifval([$2],
-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
- AC_SUBST([PACKAGE], [$1])dnl
- AC_SUBST([VERSION], [$2])],
-[_AM_SET_OPTIONS([$1])dnl
-dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
-m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
-  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
-
-_AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
-
-# Some tools Automake needs.
-AC_REQUIRE([AM_SANITY_CHECK])dnl
-AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
-AM_MISSING_PROG(AUTOCONF, autoconf)
-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
-AM_MISSING_PROG(AUTOHEADER, autoheader)
-AM_MISSING_PROG(MAKEINFO, makeinfo)
-AM_PROG_INSTALL_SH
-AM_PROG_INSTALL_STRIP
-AC_REQUIRE([AM_PROG_MKDIR_P])dnl
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([AC_PROG_MAKE_SET])dnl
-AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
-              [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
-	      		     [_AM_PROG_TAR([v7])])])
-_AM_IF_OPTION([no-dependencies],,
-[AC_PROVIDE_IFELSE([AC_PROG_CC],
-                  [_AM_DEPENDENCIES(CC)],
-                  [define([AC_PROG_CC],
-                          defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
-                  [_AM_DEPENDENCIES(CXX)],
-                  [define([AC_PROG_CXX],
-                          defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-                  [_AM_DEPENDENCIES(OBJC)],
-                  [define([AC_PROG_OBJC],
-                          defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
-])
-])
-
-
-# When config.status generates a header, we must update the stamp-h file.
-# This file resides in the same directory as the config header
-# that is generated.  The stamp files are numbered to have different names.
-
-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
-# loop where config.status creates the headers, so we can generate
-# our stamp files there.
-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
-[# Compute $1's index in $config_headers.
-_am_arg=$1
-_am_stamp_count=1
-for _am_header in $config_headers :; do
-  case $_am_header in
-    $_am_arg | $_am_arg:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_SH
-# ------------------
-# Define $install_sh.
-AC_DEFUN([AM_PROG_INSTALL_SH],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
-AC_SUBST(install_sh)])
-
-# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 2
-
-# Check whether the underlying file-system supports filenames
-# with a leading dot.  For instance MS-DOS doesn't.
-AC_DEFUN([AM_SET_LEADING_DOT],
-[rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-AC_SUBST([am__leading_dot])])
-
-# Check to see how 'make' treats includes.	            -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 3
-
-# AM_MAKE_INCLUDE()
-# -----------------
-# Check to see how make treats includes.
-AC_DEFUN([AM_MAKE_INCLUDE],
-[am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
-	@echo done
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-AC_MSG_CHECKING([for style of include used by $am_make])
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# We grep out `Entering directory' and `Leaving directory'
-# messages which can occur if `w' ends up in MAKEFLAGS.
-# In particular we don't look at `^make:' because GNU make might
-# be invoked under some other name (usually "gmake"), in which
-# case it prints its new name instead of `make'.
-if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
-   am__include=include
-   am__quote=
-   _am_result=GNU
-fi
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
-      am__include=.include
-      am__quote="\""
-      _am_result=BSD
-   fi
-fi
-AC_SUBST([am__include])
-AC_SUBST([am__quote])
-AC_MSG_RESULT([$_am_result])
-rm -f confinc confmf
-])
-
-# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
-
-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 5
-
-# AM_MISSING_PROG(NAME, PROGRAM)
-# ------------------------------
-AC_DEFUN([AM_MISSING_PROG],
-[AC_REQUIRE([AM_MISSING_HAS_RUN])
-$1=${$1-"${am_missing_run}$2"}
-AC_SUBST($1)])
-
-
-# AM_MISSING_HAS_RUN
-# ------------------
-# Define MISSING if not defined so far and test if it supports --run.
-# If it does, set am_missing_run to use it, otherwise, to nothing.
-AC_DEFUN([AM_MISSING_HAS_RUN],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([missing])dnl
-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
-# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
-  am_missing_run="$MISSING --run "
-else
-  am_missing_run=
-  AC_MSG_WARN([`missing' script is too old or missing])
-fi
-])
-
-# Copyright (C) 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_MKDIR_P
-# ---------------
-# Check for `mkdir -p'.
-AC_DEFUN([AM_PROG_MKDIR_P],
-[AC_PREREQ([2.60])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
-dnl while keeping a definition of mkdir_p for backward compatibility.
-dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
-dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
-dnl Makefile.ins that do not define MKDIR_P, so we do our own
-dnl adjustment using top_builddir (which is defined more often than
-dnl MKDIR_P).
-AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
-case $mkdir_p in
-  [[\\/$]]* | ?:[[\\/]]*) ;;
-  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-])
-
-# Helper functions for option handling.                     -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003, 2005, 2008  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 4
-
-# _AM_MANGLE_OPTION(NAME)
-# -----------------------
-AC_DEFUN([_AM_MANGLE_OPTION],
-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
-
-# _AM_SET_OPTION(NAME)
-# ------------------------------
-# Set option NAME.  Presently that only means defining a flag for this option.
-AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
-
-# _AM_SET_OPTIONS(OPTIONS)
-# ----------------------------------
-# OPTIONS is a space-separated list of Automake options.
-AC_DEFUN([_AM_SET_OPTIONS],
-[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
-
-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
-# -------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-AC_DEFUN([_AM_IF_OPTION],
-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-
-# Check to make sure that the build environment is sane.    -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 4
-
-# AM_SANITY_CHECK
-# ---------------
-AC_DEFUN([AM_SANITY_CHECK],
-[AC_MSG_CHECKING([whether build environment is sane])
-# Just in case
-sleep 1
-echo timestamp > conftest.file
-# Do `set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
-   if test "$[*]" = "X"; then
-      # -L didn't work.
-      set X `ls -t $srcdir/configure conftest.file`
-   fi
-   rm -f conftest.file
-   if test "$[*]" != "X $srcdir/configure conftest.file" \
-      && test "$[*]" != "X conftest.file $srcdir/configure"; then
-
-      # If neither matched, then we have a broken ls.  This can happen
-      # if, for instance, CONFIG_SHELL is bash and it inherits a
-      # broken ls alias from the environment.  This has actually
-      # happened.  Such a system could not be considered "sane".
-      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
-alias in your environment])
-   fi
-
-   test "$[2]" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   AC_MSG_ERROR([newly created file is older than distributed files!
-Check your system clock])
-fi
-AC_MSG_RESULT(yes)])
-
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_STRIP
-# ---------------------
-# One issue with vendor `install' (even GNU) is that you can't
-# specify the program used to strip binaries.  This is especially
-# annoying in cross-compiling environments, where the build's strip
-# is unlikely to handle the host's binaries.
-# Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in `make install-strip', and initialize
-# STRIPPROG with the value of the STRIP variable (set by the user).
-AC_DEFUN([AM_PROG_INSTALL_STRIP],
-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'.  However `strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
-if test "$cross_compiling" != no; then
-  AC_CHECK_TOOL([STRIP], [strip], :)
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-AC_SUBST([INSTALL_STRIP_PROGRAM])])
-
-# Copyright (C) 2006  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
-# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
-# This macro is traced by Automake.
-AC_DEFUN([_AM_SUBST_NOTMAKE])
-
-# Check how to create a tarball.                            -*- Autoconf -*-
-
-# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 2
-
-# _AM_PROG_TAR(FORMAT)
-# --------------------
-# Check how to create a tarball in format FORMAT.
-# FORMAT should be one of `v7', `ustar', or `pax'.
-#
-# Substitute a variable $(am__tar) that is a command
-# writing to stdout a FORMAT-tarball containing the directory
-# $tardir.
-#     tardir=directory && $(am__tar) > result.tar
-#
-# Substitute a variable $(am__untar) that extract such
-# a tarball read from stdin.
-#     $(am__untar) < result.tar
-AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility.
-AM_MISSING_PROG([AMTAR], [tar])
-m4_if([$1], [v7],
-     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
-     [m4_case([$1], [ustar],, [pax],,
-              [m4_fatal([Unknown tar format])])
-AC_MSG_CHECKING([how to create a $1 tar archive])
-# Loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
-# Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of `-'.
-for _am_tool in $_am_tools
-do
-  case $_am_tool in
-  gnutar)
-    for _am_tar in tar gnutar gtar;
-    do
-      AM_RUN_LOG([$_am_tar --version]) && break
-    done
-    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
-    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
-    am__untar="$_am_tar -xf -"
-    ;;
-  plaintar)
-    # Must skip GNU tar: if it does not support --format= it doesn't create
-    # ustar tarball either.
-    (tar --version) >/dev/null 2>&1 && continue
-    am__tar='tar chf - "$$tardir"'
-    am__tar_='tar chf - "$tardir"'
-    am__untar='tar xf -'
-    ;;
-  pax)
-    am__tar='pax -L -x $1 -w "$$tardir"'
-    am__tar_='pax -L -x $1 -w "$tardir"'
-    am__untar='pax -r'
-    ;;
-  cpio)
-    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
-    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
-    am__untar='cpio -i -H $1 -d'
-    ;;
-  none)
-    am__tar=false
-    am__tar_=false
-    am__untar=false
-    ;;
-  esac
-
-  # If the value was cached, stop now.  We just wanted to have am__tar
-  # and am__untar set.
-  test -n "${am_cv_prog_tar_$1}" && break
-
-  # tar/untar a dummy directory, and stop if the command works
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  echo GrepMe > conftest.dir/file
-  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
-  rm -rf conftest.dir
-  if test -s conftest.tar; then
-    AM_RUN_LOG([$am__untar <conftest.tar])
-    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
-  fi
-done
-rm -rf conftest.dir
-
-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-AC_MSG_RESULT([$am_cv_prog_tar_$1])])
-AC_SUBST([am__tar])
-AC_SUBST([am__untar])
-]) # _AM_PROG_TAR
-
diff --git a/yaml-0.1.3/config.h.in b/yaml-0.1.3/config.h.in
deleted file mode 100644
index dcb1d47..0000000
--- a/yaml-0.1.3/config.h.in
+++ /dev/null
@@ -1,77 +0,0 @@
-/* config.h.in.  Generated from configure.ac by autoheader.  */
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#undef HAVE_DLFCN_H
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
-   */
-#undef LT_OBJDIR
-
-/* Name of package */
-#undef PACKAGE
-
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Version number of package */
-#undef VERSION
-
-/* Define the major version number. */
-#undef YAML_VERSION_MAJOR
-
-/* Define the minor version number. */
-#undef YAML_VERSION_MINOR
-
-/* Define the patch version number. */
-#undef YAML_VERSION_PATCH
-
-/* Define the version string. */
-#undef YAML_VERSION_STRING
-
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-#undef size_t
diff --git a/yaml-0.1.3/config/config.guess b/yaml-0.1.3/config/config.guess
deleted file mode 100755
index f32079a..0000000
--- a/yaml-0.1.3/config/config.guess
+++ /dev/null
@@ -1,1526 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
-#   Free Software Foundation, Inc.
-
-timestamp='2008-01-23'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Originally written by Per Bothner <per@bothner.com>.
-# Please send patches to <config-patches@gnu.org>.  Submit a context
-# diff and a properly formatted ChangeLog entry.
-#
-# This script attempts to guess a canonical system name similar to
-# config.sub.  If it succeeds, it prints the system name on stdout, and
-# exits with 0.  Otherwise, it exits with 1.
-#
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit build system type.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )	# Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help" >&2
-       exit 1 ;;
-    * )
-       break ;;
-  esac
-done
-
-if test $# != 0; then
-  echo "$me: too many arguments$help" >&2
-  exit 1
-fi
-
-trap 'exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,)    echo "int x;" > $dummy.c ;
-	for c in cc gcc c89 c99 ; do
-	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
-	     CC_FOR_BUILD="$c"; break ;
-	  fi ;
-	done ;
-	if test x"$CC_FOR_BUILD" = x ; then
-	  CC_FOR_BUILD=no_compiler_found ;
-	fi
-	;;
- ,,*)   CC_FOR_BUILD=$CC ;;
- ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
-	PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
-    *:NetBSD:*:*)
-	# NetBSD (nbsd) targets should (where applicable) match one or
-	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
-	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
-	# switched to ELF, *-*-netbsd* would select the old
-	# object file format.  This provides both forward
-	# compatibility and a consistent mechanism for selecting the
-	# object file format.
-	#
-	# Note: NetBSD doesn't particularly care about the vendor
-	# portion of the name.  We always set it to "unknown".
-	sysctl="sysctl -n hw.machine_arch"
-	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
-	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
-	case "${UNAME_MACHINE_ARCH}" in
-	    armeb) machine=armeb-unknown ;;
-	    arm*) machine=arm-unknown ;;
-	    sh3el) machine=shl-unknown ;;
-	    sh3eb) machine=sh-unknown ;;
-	    sh5el) machine=sh5le-unknown ;;
-	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
-	esac
-	# The Operating System including object format, if it has switched
-	# to ELF recently, or will in the future.
-	case "${UNAME_MACHINE_ARCH}" in
-	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-		eval $set_cc_for_build
-		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-			| grep __ELF__ >/dev/null
-		then
-		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
-		    # Return netbsd for either.  FIX?
-		    os=netbsd
-		else
-		    os=netbsdelf
-		fi
-		;;
-	    *)
-	        os=netbsd
-		;;
-	esac
-	# The OS release
-	# Debian GNU/NetBSD machines have a different userland, and
-	# thus, need a distinct triplet. However, they do not need
-	# kernel version information, so it can be replaced with a
-	# suitable tag, in the style of linux-gnu.
-	case "${UNAME_VERSION}" in
-	    Debian*)
-		release='-gnu'
-		;;
-	    *)
-		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-		;;
-	esac
-	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
-	# contains redundant information, the shorter form:
-	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-	echo "${machine}-${os}${release}"
-	exit ;;
-    *:OpenBSD:*:*)
-	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
-	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
-	exit ;;
-    *:ekkoBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
-	exit ;;
-    *:SolidBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
-	exit ;;
-    macppc:MirBSD:*:*)
-	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
-	exit ;;
-    *:MirBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
-	exit ;;
-    alpha:OSF1:*:*)
-	case $UNAME_RELEASE in
-	*4.0)
-		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
-		;;
-	*5.*)
-	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
-		;;
-	esac
-	# According to Compaq, /usr/sbin/psrinfo has been available on
-	# OSF/1 and Tru64 systems produced since 1995.  I hope that
-	# covers most systems running today.  This code pipes the CPU
-	# types through head -n 1, so we only detect the type of CPU 0.
-	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
-	case "$ALPHA_CPU_TYPE" in
-	    "EV4 (21064)")
-		UNAME_MACHINE="alpha" ;;
-	    "EV4.5 (21064)")
-		UNAME_MACHINE="alpha" ;;
-	    "LCA4 (21066/21068)")
-		UNAME_MACHINE="alpha" ;;
-	    "EV5 (21164)")
-		UNAME_MACHINE="alphaev5" ;;
-	    "EV5.6 (21164A)")
-		UNAME_MACHINE="alphaev56" ;;
-	    "EV5.6 (21164PC)")
-		UNAME_MACHINE="alphapca56" ;;
-	    "EV5.7 (21164PC)")
-		UNAME_MACHINE="alphapca57" ;;
-	    "EV6 (21264)")
-		UNAME_MACHINE="alphaev6" ;;
-	    "EV6.7 (21264A)")
-		UNAME_MACHINE="alphaev67" ;;
-	    "EV6.8CB (21264C)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.8AL (21264B)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.8CX (21264D)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.9A (21264/EV69A)")
-		UNAME_MACHINE="alphaev69" ;;
-	    "EV7 (21364)")
-		UNAME_MACHINE="alphaev7" ;;
-	    "EV7.9 (21364A)")
-		UNAME_MACHINE="alphaev79" ;;
-	esac
-	# A Pn.n version is a patched version.
-	# A Vn.n version is a released version.
-	# A Tn.n version is a released field test version.
-	# A Xn.n version is an unreleased experimental baselevel.
-	# 1.2 uses "1.2" for uname -r.
-	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-	exit ;;
-    Alpha\ *:Windows_NT*:*)
-	# How do we know it's Interix rather than the generic POSIX subsystem?
-	# Should we change UNAME_MACHINE based on the output of uname instead
-	# of the specific Alpha model?
-	echo alpha-pc-interix
-	exit ;;
-    21064:Windows_NT:50:3)
-	echo alpha-dec-winnt3.5
-	exit ;;
-    Amiga*:UNIX_System_V:4.0:*)
-	echo m68k-unknown-sysv4
-	exit ;;
-    *:[Aa]miga[Oo][Ss]:*:*)
-	echo ${UNAME_MACHINE}-unknown-amigaos
-	exit ;;
-    *:[Mm]orph[Oo][Ss]:*:*)
-	echo ${UNAME_MACHINE}-unknown-morphos
-	exit ;;
-    *:OS/390:*:*)
-	echo i370-ibm-openedition
-	exit ;;
-    *:z/VM:*:*)
-	echo s390-ibm-zvmoe
-	exit ;;
-    *:OS400:*:*)
-        echo powerpc-ibm-os400
-	exit ;;
-    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-	echo arm-acorn-riscix${UNAME_RELEASE}
-	exit ;;
-    arm:riscos:*:*|arm:RISCOS:*:*)
-	echo arm-unknown-riscos
-	exit ;;
-    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-	echo hppa1.1-hitachi-hiuxmpp
-	exit ;;
-    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
-	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-	if test "`(/bin/universe) 2>/dev/null`" = att ; then
-		echo pyramid-pyramid-sysv3
-	else
-		echo pyramid-pyramid-bsd
-	fi
-	exit ;;
-    NILE*:*:*:dcosx)
-	echo pyramid-pyramid-svr4
-	exit ;;
-    DRS?6000:unix:4.0:6*)
-	echo sparc-icl-nx6
-	exit ;;
-    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
-	case `/usr/bin/uname -p` in
-	    sparc) echo sparc-icl-nx7; exit ;;
-	esac ;;
-    sun4H:SunOS:5.*:*)
-	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:6*:*)
-	# According to config.sub, this is the proper way to canonicalize
-	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
-	# it's likely to be more like Solaris than SunOS4.
-	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:*:*)
-	case "`/usr/bin/arch -k`" in
-	    Series*|S4*)
-		UNAME_RELEASE=`uname -v`
-		;;
-	esac
-	# Japanese Language versions have a version number like `4.1.3-JL'.
-	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
-	exit ;;
-    sun3*:SunOS:*:*)
-	echo m68k-sun-sunos${UNAME_RELEASE}
-	exit ;;
-    sun*:*:4.2BSD:*)
-	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
-	case "`/bin/arch`" in
-	    sun3)
-		echo m68k-sun-sunos${UNAME_RELEASE}
-		;;
-	    sun4)
-		echo sparc-sun-sunos${UNAME_RELEASE}
-		;;
-	esac
-	exit ;;
-    aushp:SunOS:*:*)
-	echo sparc-auspex-sunos${UNAME_RELEASE}
-	exit ;;
-    # The situation for MiNT is a little confusing.  The machine name
-    # can be virtually everything (everything which is not
-    # "atarist" or "atariste" at least should have a processor
-    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
-    # to the lowercase version "mint" (or "freemint").  Finally
-    # the system name "TOS" denotes a system which is actually not
-    # MiNT.  But MiNT is downward compatible to TOS, so this should
-    # be no problem.
-    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-        echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
-    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-	echo m68k-atari-mint${UNAME_RELEASE}
-        exit ;;
-    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-        echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
-    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-        echo m68k-milan-mint${UNAME_RELEASE}
-        exit ;;
-    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-        echo m68k-hades-mint${UNAME_RELEASE}
-        exit ;;
-    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-        echo m68k-unknown-mint${UNAME_RELEASE}
-        exit ;;
-    m68k:machten:*:*)
-	echo m68k-apple-machten${UNAME_RELEASE}
-	exit ;;
-    powerpc:machten:*:*)
-	echo powerpc-apple-machten${UNAME_RELEASE}
-	exit ;;
-    RISC*:Mach:*:*)
-	echo mips-dec-mach_bsd4.3
-	exit ;;
-    RISC*:ULTRIX:*:*)
-	echo mips-dec-ultrix${UNAME_RELEASE}
-	exit ;;
-    VAX*:ULTRIX*:*:*)
-	echo vax-dec-ultrix${UNAME_RELEASE}
-	exit ;;
-    2020:CLIX:*:* | 2430:CLIX:*:*)
-	echo clipper-intergraph-clix${UNAME_RELEASE}
-	exit ;;
-    mips:*:*:UMIPS | mips:*:*:RISCos)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-#ifdef __cplusplus
-#include <stdio.h>  /* for printf() prototype */
-	int main (int argc, char *argv[]) {
-#else
-	int main (argc, argv) int argc; char *argv[]; {
-#endif
-	#if defined (host_mips) && defined (MIPSEB)
-	#if defined (SYSTYPE_SYSV)
-	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
-	#endif
-	#if defined (SYSTYPE_SVR4)
-	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
-	#endif
-	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
-	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
-	#endif
-	#endif
-	  exit (-1);
-	}
-EOF
-	$CC_FOR_BUILD -o $dummy $dummy.c &&
-	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
-	  SYSTEM_NAME=`$dummy $dummyarg` &&
-	    { echo "$SYSTEM_NAME"; exit; }
-	echo mips-mips-riscos${UNAME_RELEASE}
-	exit ;;
-    Motorola:PowerMAX_OS:*:*)
-	echo powerpc-motorola-powermax
-	exit ;;
-    Motorola:*:4.3:PL8-*)
-	echo powerpc-harris-powermax
-	exit ;;
-    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-	echo powerpc-harris-powermax
-	exit ;;
-    Night_Hawk:Power_UNIX:*:*)
-	echo powerpc-harris-powerunix
-	exit ;;
-    m88k:CX/UX:7*:*)
-	echo m88k-harris-cxux7
-	exit ;;
-    m88k:*:4*:R4*)
-	echo m88k-motorola-sysv4
-	exit ;;
-    m88k:*:3*:R3*)
-	echo m88k-motorola-sysv3
-	exit ;;
-    AViiON:dgux:*:*)
-        # DG/UX returns AViiON for all architectures
-        UNAME_PROCESSOR=`/usr/bin/uname -p`
-	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
-	then
-	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
-	       [ ${TARGET_BINARY_INTERFACE}x = x ]
-	    then
-		echo m88k-dg-dgux${UNAME_RELEASE}
-	    else
-		echo m88k-dg-dguxbcs${UNAME_RELEASE}
-	    fi
-	else
-	    echo i586-dg-dgux${UNAME_RELEASE}
-	fi
- 	exit ;;
-    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
-	echo m88k-dolphin-sysv3
-	exit ;;
-    M88*:*:R3*:*)
-	# Delta 88k system running SVR3
-	echo m88k-motorola-sysv3
-	exit ;;
-    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
-	echo m88k-tektronix-sysv3
-	exit ;;
-    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
-	echo m68k-tektronix-bsd
-	exit ;;
-    *:IRIX*:*:*)
-	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
-	exit ;;
-    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
-    i*86:AIX:*:*)
-	echo i386-ibm-aix
-	exit ;;
-    ia64:AIX:*:*)
-	if [ -x /usr/bin/oslevel ] ; then
-		IBM_REV=`/usr/bin/oslevel`
-	else
-		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-	fi
-	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
-	exit ;;
-    *:AIX:2:3)
-	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-		eval $set_cc_for_build
-		sed 's/^		//' << EOF >$dummy.c
-		#include <sys/systemcfg.h>
-
-		main()
-			{
-			if (!__power_pc())
-				exit(1);
-			puts("powerpc-ibm-aix3.2.5");
-			exit(0);
-			}
-EOF
-		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
-		then
-			echo "$SYSTEM_NAME"
-		else
-			echo rs6000-ibm-aix3.2.5
-		fi
-	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
-		echo rs6000-ibm-aix3.2.4
-	else
-		echo rs6000-ibm-aix3.2
-	fi
-	exit ;;
-    *:AIX:*:[456])
-	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
-	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
-		IBM_ARCH=rs6000
-	else
-		IBM_ARCH=powerpc
-	fi
-	if [ -x /usr/bin/oslevel ] ; then
-		IBM_REV=`/usr/bin/oslevel`
-	else
-		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-	fi
-	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
-	exit ;;
-    *:AIX:*:*)
-	echo rs6000-ibm-aix
-	exit ;;
-    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
-	echo romp-ibm-bsd4.4
-	exit ;;
-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
-	exit ;;                             # report: romp-ibm BSD 4.3
-    *:BOSX:*:*)
-	echo rs6000-bull-bosx
-	exit ;;
-    DPX/2?00:B.O.S.:*:*)
-	echo m68k-bull-sysv3
-	exit ;;
-    9000/[34]??:4.3bsd:1.*:*)
-	echo m68k-hp-bsd
-	exit ;;
-    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-	echo m68k-hp-bsd4.4
-	exit ;;
-    9000/[34678]??:HP-UX:*:*)
-	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-	case "${UNAME_MACHINE}" in
-	    9000/31? )            HP_ARCH=m68000 ;;
-	    9000/[34]?? )         HP_ARCH=m68k ;;
-	    9000/[678][0-9][0-9])
-		if [ -x /usr/bin/getconf ]; then
-		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-                    case "${sc_cpu_version}" in
-                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-                      532)                      # CPU_PA_RISC2_0
-                        case "${sc_kernel_bits}" in
-                          32) HP_ARCH="hppa2.0n" ;;
-                          64) HP_ARCH="hppa2.0w" ;;
-			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
-                        esac ;;
-                    esac
-		fi
-		if [ "${HP_ARCH}" = "" ]; then
-		    eval $set_cc_for_build
-		    sed 's/^              //' << EOF >$dummy.c
-
-              #define _HPUX_SOURCE
-              #include <stdlib.h>
-              #include <unistd.h>
-
-              int main ()
-              {
-              #if defined(_SC_KERNEL_BITS)
-                  long bits = sysconf(_SC_KERNEL_BITS);
-              #endif
-                  long cpu  = sysconf (_SC_CPU_VERSION);
-
-                  switch (cpu)
-              	{
-              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-              	case CPU_PA_RISC2_0:
-              #if defined(_SC_KERNEL_BITS)
-              	    switch (bits)
-              		{
-              		case 64: puts ("hppa2.0w"); break;
-              		case 32: puts ("hppa2.0n"); break;
-              		default: puts ("hppa2.0"); break;
-              		} break;
-              #else  /* !defined(_SC_KERNEL_BITS) */
-              	    puts ("hppa2.0"); break;
-              #endif
-              	default: puts ("hppa1.0"); break;
-              	}
-                  exit (0);
-              }
-EOF
-		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
-		    test -z "$HP_ARCH" && HP_ARCH=hppa
-		fi ;;
-	esac
-	if [ ${HP_ARCH} = "hppa2.0w" ]
-	then
-	    eval $set_cc_for_build
-
-	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
-	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
-	    # generating 64-bit code.  GNU and HP use different nomenclature:
-	    #
-	    # $ CC_FOR_BUILD=cc ./config.guess
-	    # => hppa2.0w-hp-hpux11.23
-	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
-	    # => hppa64-hp-hpux11.23
-
-	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
-		grep __LP64__ >/dev/null
-	    then
-		HP_ARCH="hppa2.0w"
-	    else
-		HP_ARCH="hppa64"
-	    fi
-	fi
-	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
-	exit ;;
-    ia64:HP-UX:*:*)
-	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-	echo ia64-hp-hpux${HPUX_REV}
-	exit ;;
-    3050*:HI-UX:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#include <unistd.h>
-	int
-	main ()
-	{
-	  long cpu = sysconf (_SC_CPU_VERSION);
-	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
-	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
-	     results, however.  */
-	  if (CPU_IS_PA_RISC (cpu))
-	    {
-	      switch (cpu)
-		{
-		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
-		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
-		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
-		  default: puts ("hppa-hitachi-hiuxwe2"); break;
-		}
-	    }
-	  else if (CPU_IS_HP_MC68K (cpu))
-	    puts ("m68k-hitachi-hiuxwe2");
-	  else puts ("unknown-hitachi-hiuxwe2");
-	  exit (0);
-	}
-EOF
-	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
-		{ echo "$SYSTEM_NAME"; exit; }
-	echo unknown-hitachi-hiuxwe2
-	exit ;;
-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
-	echo hppa1.1-hp-bsd
-	exit ;;
-    9000/8??:4.3bsd:*:*)
-	echo hppa1.0-hp-bsd
-	exit ;;
-    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-	echo hppa1.0-hp-mpeix
-	exit ;;
-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
-	echo hppa1.1-hp-osf
-	exit ;;
-    hp8??:OSF1:*:*)
-	echo hppa1.0-hp-osf
-	exit ;;
-    i*86:OSF1:*:*)
-	if [ -x /usr/sbin/sysversion ] ; then
-	    echo ${UNAME_MACHINE}-unknown-osf1mk
-	else
-	    echo ${UNAME_MACHINE}-unknown-osf1
-	fi
-	exit ;;
-    parisc*:Lites*:*:*)
-	echo hppa1.1-hp-lites
-	exit ;;
-    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
-	echo c1-convex-bsd
-        exit ;;
-    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
-	if getsysinfo -f scalar_acc
-	then echo c32-convex-bsd
-	else echo c2-convex-bsd
-	fi
-        exit ;;
-    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
-	echo c34-convex-bsd
-        exit ;;
-    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
-	echo c38-convex-bsd
-        exit ;;
-    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
-	echo c4-convex-bsd
-        exit ;;
-    CRAY*Y-MP:*:*:*)
-	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*[A-Z]90:*:*:*)
-	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
-	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-	      -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*TS:*:*:*)
-	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*T3E:*:*:*)
-	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*SV1:*:*:*)
-	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    *:UNICOS/mp:*:*)
-	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-        exit ;;
-    5000:UNIX_System_V:4.*:*)
-        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-	exit ;;
-    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
-	exit ;;
-    sparc*:BSD/OS:*:*)
-	echo sparc-unknown-bsdi${UNAME_RELEASE}
-	exit ;;
-    *:BSD/OS:*:*)
-	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
-	exit ;;
-    *:FreeBSD:*:*)
-	case ${UNAME_MACHINE} in
-	    pc98)
-		echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	    amd64)
-		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	    *)
-		echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	esac
-	exit ;;
-    i*:CYGWIN*:*)
-	echo ${UNAME_MACHINE}-pc-cygwin
-	exit ;;
-    *:MINGW*:*)
-	echo ${UNAME_MACHINE}-pc-mingw32
-	exit ;;
-    i*:windows32*:*)
-    	# uname -m includes "-pc" on this system.
-    	echo ${UNAME_MACHINE}-mingw32
-	exit ;;
-    i*:PW*:*)
-	echo ${UNAME_MACHINE}-pc-pw32
-	exit ;;
-    *:Interix*:[3456]*)
-    	case ${UNAME_MACHINE} in
-	    x86)
-		echo i586-pc-interix${UNAME_RELEASE}
-		exit ;;
-	    EM64T | authenticamd)
-		echo x86_64-unknown-interix${UNAME_RELEASE}
-		exit ;;
-	    IA64)
-		echo ia64-unknown-interix${UNAME_RELEASE}
-		exit ;;
-	esac ;;
-    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
-	echo i${UNAME_MACHINE}-pc-mks
-	exit ;;
-    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
-	# How do we know it's Interix rather than the generic POSIX subsystem?
-	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
-	# UNAME_MACHINE based on the output of uname instead of i386?
-	echo i586-pc-interix
-	exit ;;
-    i*:UWIN*:*)
-	echo ${UNAME_MACHINE}-pc-uwin
-	exit ;;
-    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-	echo x86_64-unknown-cygwin
-	exit ;;
-    p*:CYGWIN*:*)
-	echo powerpcle-unknown-cygwin
-	exit ;;
-    prep*:SunOS:5.*:*)
-	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    *:GNU:*:*)
-	# the GNU system
-	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
-	exit ;;
-    *:GNU/*:*:*)
-	# other systems with GNU libc and userland
-	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
-	exit ;;
-    i*86:Minix:*:*)
-	echo ${UNAME_MACHINE}-pc-minix
-	exit ;;
-    arm*:Linux:*:*)
-	eval $set_cc_for_build
-	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
-	    | grep -q __ARM_EABI__
-	then
-	    echo ${UNAME_MACHINE}-unknown-linux-gnu
-	else
-	    echo ${UNAME_MACHINE}-unknown-linux-gnueabi
-	fi
-	exit ;;
-    avr32*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    cris:Linux:*:*)
-	echo cris-axis-linux-gnu
-	exit ;;
-    crisv32:Linux:*:*)
-	echo crisv32-axis-linux-gnu
-	exit ;;
-    frv:Linux:*:*)
-    	echo frv-unknown-linux-gnu
-	exit ;;
-    ia64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    m32r*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    m68*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    mips:Linux:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#undef CPU
-	#undef mips
-	#undef mipsel
-	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-	CPU=mipsel
-	#else
-	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-	CPU=mips
-	#else
-	CPU=
-	#endif
-	#endif
-EOF
-	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-	    /^CPU/{
-		s: ::g
-		p
-	    }'`"
-	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
-	;;
-    mips64:Linux:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#undef CPU
-	#undef mips64
-	#undef mips64el
-	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-	CPU=mips64el
-	#else
-	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-	CPU=mips64
-	#else
-	CPU=
-	#endif
-	#endif
-EOF
-	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-	    /^CPU/{
-		s: ::g
-		p
-	    }'`"
-	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
-	;;
-    or32:Linux:*:*)
-	echo or32-unknown-linux-gnu
-	exit ;;
-    ppc:Linux:*:*)
-	echo powerpc-unknown-linux-gnu
-	exit ;;
-    ppc64:Linux:*:*)
-	echo powerpc64-unknown-linux-gnu
-	exit ;;
-    alpha:Linux:*:*)
-	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-	  EV5)   UNAME_MACHINE=alphaev5 ;;
-	  EV56)  UNAME_MACHINE=alphaev56 ;;
-	  PCA56) UNAME_MACHINE=alphapca56 ;;
-	  PCA57) UNAME_MACHINE=alphapca56 ;;
-	  EV6)   UNAME_MACHINE=alphaev6 ;;
-	  EV67)  UNAME_MACHINE=alphaev67 ;;
-	  EV68*) UNAME_MACHINE=alphaev68 ;;
-        esac
-	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
-	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
-	exit ;;
-    parisc:Linux:*:* | hppa:Linux:*:*)
-	# Look for CPU level
-	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
-	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
-	  *)    echo hppa-unknown-linux-gnu ;;
-	esac
-	exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-	echo hppa64-unknown-linux-gnu
-	exit ;;
-    s390:Linux:*:* | s390x:Linux:*:*)
-	echo ${UNAME_MACHINE}-ibm-linux
-	exit ;;
-    sh64*:Linux:*:*)
-    	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    sh*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    sparc:Linux:*:* | sparc64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    vax:Linux:*:*)
-	echo ${UNAME_MACHINE}-dec-linux-gnu
-	exit ;;
-    x86_64:Linux:*:*)
-	echo x86_64-unknown-linux-gnu
-	exit ;;
-    xtensa*:Linux:*:*)
-    	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    i*86:Linux:*:*)
-	# The BFD linker knows what the default object file format is, so
-	# first see if it will tell us. cd to the root directory to prevent
-	# problems with other programs or directories called `ld' in the path.
-	# Set LC_ALL=C to ensure ld outputs messages in English.
-	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
-			 | sed -ne '/supported targets:/!d
-				    s/[ 	][ 	]*/ /g
-				    s/.*supported targets: *//
-				    s/ .*//
-				    p'`
-        case "$ld_supported_targets" in
-	  elf32-i386)
-		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
-		;;
-	  a.out-i386-linux)
-		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
-		exit ;;
-	  coff-i386)
-		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
-		exit ;;
-	  "")
-		# Either a pre-BFD a.out linker (linux-gnuoldld) or
-		# one that does not give us useful --help.
-		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
-		exit ;;
-	esac
-	# Determine whether the default compiler is a.out or elf
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#include <features.h>
-	#ifdef __ELF__
-	# ifdef __GLIBC__
-	#  if __GLIBC__ >= 2
-	LIBC=gnu
-	#  else
-	LIBC=gnulibc1
-	#  endif
-	# else
-	LIBC=gnulibc1
-	# endif
-	#else
-	#if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
-	LIBC=gnu
-	#else
-	LIBC=gnuaout
-	#endif
-	#endif
-	#ifdef __dietlibc__
-	LIBC=dietlibc
-	#endif
-EOF
-	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-	    /^LIBC/{
-		s: ::g
-		p
-	    }'`"
-	test x"${LIBC}" != x && {
-		echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
-		exit
-	}
-	test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
-	;;
-    i*86:DYNIX/ptx:4*:*)
-	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-	# earlier versions are messed up and put the nodename in both
-	# sysname and nodename.
-	echo i386-sequent-sysv4
-	exit ;;
-    i*86:UNIX_SV:4.2MP:2.*)
-        # Unixware is an offshoot of SVR4, but it has its own version
-        # number series starting with 2...
-        # I am not positive that other SVR4 systems won't match this,
-	# I just have to hope.  -- rms.
-        # Use sysv4.2uw... so that sysv4* matches it.
-	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
-	exit ;;
-    i*86:OS/2:*:*)
-	# If we were able to find `uname', then EMX Unix compatibility
-	# is probably installed.
-	echo ${UNAME_MACHINE}-pc-os2-emx
-	exit ;;
-    i*86:XTS-300:*:STOP)
-	echo ${UNAME_MACHINE}-unknown-stop
-	exit ;;
-    i*86:atheos:*:*)
-	echo ${UNAME_MACHINE}-unknown-atheos
-	exit ;;
-    i*86:syllable:*:*)
-	echo ${UNAME_MACHINE}-pc-syllable
-	exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
-	echo i386-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    i*86:*DOS:*:*)
-	echo ${UNAME_MACHINE}-pc-msdosdjgpp
-	exit ;;
-    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
-	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
-	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
-	else
-		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
-	fi
-	exit ;;
-    i*86:*:5:[678]*)
-    	# UnixWare 7.x, OpenUNIX and OpenServer 6.
-	case `/bin/uname -X | grep "^Machine"` in
-	    *486*)	     UNAME_MACHINE=i486 ;;
-	    *Pentium)	     UNAME_MACHINE=i586 ;;
-	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
-	esac
-	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
-	exit ;;
-    i*86:*:3.2:*)
-	if test -f /usr/options/cb.name; then
-		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
-		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
-	elif /bin/uname -X 2>/dev/null >/dev/null ; then
-		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
-		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
-		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
-			&& UNAME_MACHINE=i586
-		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
-			&& UNAME_MACHINE=i686
-		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
-			&& UNAME_MACHINE=i686
-		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
-	else
-		echo ${UNAME_MACHINE}-pc-sysv32
-	fi
-	exit ;;
-    pc:*:*:*)
-	# Left here for compatibility:
-        # uname -m prints for DJGPP always 'pc', but it prints nothing about
-        # the processor, so we play safe by assuming i386.
-	echo i386-pc-msdosdjgpp
-        exit ;;
-    Intel:Mach:3*:*)
-	echo i386-pc-mach3
-	exit ;;
-    paragon:*:*:*)
-	echo i860-intel-osf1
-	exit ;;
-    i860:*:4.*:*) # i860-SVR4
-	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
-	else # Add other i860-SVR4 vendors below as they are discovered.
-	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
-	fi
-	exit ;;
-    mini*:CTIX:SYS*5:*)
-	# "miniframe"
-	echo m68010-convergent-sysv
-	exit ;;
-    mc68k:UNIX:SYSTEM5:3.51m)
-	echo m68k-convergent-sysv
-	exit ;;
-    M680?0:D-NIX:5.3:*)
-	echo m68k-diab-dnix
-	exit ;;
-    M68*:*:R3V[5678]*:*)
-	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
-	OS_REL=''
-	test -r /etc/.relid \
-	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-          && { echo i486-ncr-sysv4; exit; } ;;
-    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-	echo m68k-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    mc68030:UNIX_System_V:4.*:*)
-	echo m68k-atari-sysv4
-	exit ;;
-    TSUNAMI:LynxOS:2.*:*)
-	echo sparc-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    rs6000:LynxOS:2.*:*)
-	echo rs6000-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
-	echo powerpc-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    SM[BE]S:UNIX_SV:*:*)
-	echo mips-dde-sysv${UNAME_RELEASE}
-	exit ;;
-    RM*:ReliantUNIX-*:*:*)
-	echo mips-sni-sysv4
-	exit ;;
-    RM*:SINIX-*:*:*)
-	echo mips-sni-sysv4
-	exit ;;
-    *:SINIX-*:*:*)
-	if uname -p 2>/dev/null >/dev/null ; then
-		UNAME_MACHINE=`(uname -p) 2>/dev/null`
-		echo ${UNAME_MACHINE}-sni-sysv4
-	else
-		echo ns32k-sni-sysv
-	fi
-	exit ;;
-    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-                      # says <Richard.M.Bartel@ccMail.Census.GOV>
-        echo i586-unisys-sysv4
-        exit ;;
-    *:UNIX_System_V:4*:FTX*)
-	# From Gerald Hewes <hewes@openmarket.com>.
-	# How about differentiating between stratus architectures? -djm
-	echo hppa1.1-stratus-sysv4
-	exit ;;
-    *:*:*:FTX*)
-	# From seanf@swdc.stratus.com.
-	echo i860-stratus-sysv4
-	exit ;;
-    i*86:VOS:*:*)
-	# From Paul.Green@stratus.com.
-	echo ${UNAME_MACHINE}-stratus-vos
-	exit ;;
-    *:VOS:*:*)
-	# From Paul.Green@stratus.com.
-	echo hppa1.1-stratus-vos
-	exit ;;
-    mc68*:A/UX:*:*)
-	echo m68k-apple-aux${UNAME_RELEASE}
-	exit ;;
-    news*:NEWS-OS:6*:*)
-	echo mips-sony-newsos6
-	exit ;;
-    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-	if [ -d /usr/nec ]; then
-	        echo mips-nec-sysv${UNAME_RELEASE}
-	else
-	        echo mips-unknown-sysv${UNAME_RELEASE}
-	fi
-        exit ;;
-    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
-	echo powerpc-be-beos
-	exit ;;
-    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
-	echo powerpc-apple-beos
-	exit ;;
-    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
-	echo i586-pc-beos
-	exit ;;
-    SX-4:SUPER-UX:*:*)
-	echo sx4-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-5:SUPER-UX:*:*)
-	echo sx5-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-6:SUPER-UX:*:*)
-	echo sx6-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-7:SUPER-UX:*:*)
-	echo sx7-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-8:SUPER-UX:*:*)
-	echo sx8-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-8R:SUPER-UX:*:*)
-	echo sx8r-nec-superux${UNAME_RELEASE}
-	exit ;;
-    Power*:Rhapsody:*:*)
-	echo powerpc-apple-rhapsody${UNAME_RELEASE}
-	exit ;;
-    *:Rhapsody:*:*)
-	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
-	exit ;;
-    *:Darwin:*:*)
-	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-	case $UNAME_PROCESSOR in
-	    unknown) UNAME_PROCESSOR=powerpc ;;
-	esac
-	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
-	exit ;;
-    *:procnto*:*:* | *:QNX:[0123456789]*:*)
-	UNAME_PROCESSOR=`uname -p`
-	if test "$UNAME_PROCESSOR" = "x86"; then
-		UNAME_PROCESSOR=i386
-		UNAME_MACHINE=pc
-	fi
-	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
-	exit ;;
-    *:QNX:*:4*)
-	echo i386-pc-qnx
-	exit ;;
-    NSE-?:NONSTOP_KERNEL:*:*)
-	echo nse-tandem-nsk${UNAME_RELEASE}
-	exit ;;
-    NSR-?:NONSTOP_KERNEL:*:*)
-	echo nsr-tandem-nsk${UNAME_RELEASE}
-	exit ;;
-    *:NonStop-UX:*:*)
-	echo mips-compaq-nonstopux
-	exit ;;
-    BS2000:POSIX*:*:*)
-	echo bs2000-siemens-sysv
-	exit ;;
-    DS/*:UNIX_System_V:*:*)
-	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
-	exit ;;
-    *:Plan9:*:*)
-	# "uname -m" is not consistent, so use $cputype instead. 386
-	# is converted to i386 for consistency with other x86
-	# operating systems.
-	if test "$cputype" = "386"; then
-	    UNAME_MACHINE=i386
-	else
-	    UNAME_MACHINE="$cputype"
-	fi
-	echo ${UNAME_MACHINE}-unknown-plan9
-	exit ;;
-    *:TOPS-10:*:*)
-	echo pdp10-unknown-tops10
-	exit ;;
-    *:TENEX:*:*)
-	echo pdp10-unknown-tenex
-	exit ;;
-    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-	echo pdp10-dec-tops20
-	exit ;;
-    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-	echo pdp10-xkl-tops20
-	exit ;;
-    *:TOPS-20:*:*)
-	echo pdp10-unknown-tops20
-	exit ;;
-    *:ITS:*:*)
-	echo pdp10-unknown-its
-	exit ;;
-    SEI:*:*:SEIUX)
-        echo mips-sei-seiux${UNAME_RELEASE}
-	exit ;;
-    *:DragonFly:*:*)
-	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
-	exit ;;
-    *:*VMS:*:*)
-    	UNAME_MACHINE=`(uname -p) 2>/dev/null`
-	case "${UNAME_MACHINE}" in
-	    A*) echo alpha-dec-vms ; exit ;;
-	    I*) echo ia64-dec-vms ; exit ;;
-	    V*) echo vax-dec-vms ; exit ;;
-	esac ;;
-    *:XENIX:*:SysV)
-	echo i386-pc-xenix
-	exit ;;
-    i*86:skyos:*:*)
-	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
-	exit ;;
-    i*86:rdos:*:*)
-	echo ${UNAME_MACHINE}-pc-rdos
-	exit ;;
-esac
-
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
-  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
-     I don't know....  */
-  printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
-  printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
-          "4"
-#else
-	  ""
-#endif
-         ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
-  printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
-  printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
-  int version;
-  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
-  if (version < 4)
-    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-  else
-    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
-  exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
-  printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
-  printf ("ns32k-encore-mach\n"); exit (0);
-#else
-  printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
-  printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
-  printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
-  printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
-    struct utsname un;
-
-    uname(&un);
-
-    if (strncmp(un.version, "V2", 2) == 0) {
-	printf ("i386-sequent-ptx2\n"); exit (0);
-    }
-    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
-	printf ("i386-sequent-ptx1\n"); exit (0);
-    }
-    printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-#  include <sys/param.h>
-#  if defined (BSD)
-#   if BSD == 43
-      printf ("vax-dec-bsd4.3\n"); exit (0);
-#   else
-#    if BSD == 199006
-      printf ("vax-dec-bsd4.3reno\n"); exit (0);
-#    else
-      printf ("vax-dec-bsd\n"); exit (0);
-#    endif
-#   endif
-#  else
-    printf ("vax-dec-bsd\n"); exit (0);
-#  endif
-# else
-    printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
-  printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
-  exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
-	{ echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
-    case `getsysinfo -f cpu_type` in
-    c1*)
-	echo c1-convex-bsd
-	exit ;;
-    c2*)
-	if getsysinfo -f scalar_acc
-	then echo c32-convex-bsd
-	else echo c2-convex-bsd
-	fi
-	exit ;;
-    c34*)
-	echo c34-convex-bsd
-	exit ;;
-    c38*)
-	echo c38-convex-bsd
-	exit ;;
-    c4*)
-	echo c4-convex-bsd
-	exit ;;
-    esac
-fi
-
-cat >&2 <<EOF
-$0: unable to guess system type
-
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
-
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-and
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches@gnu.org> in order to provide the needed
-information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo               = `(hostinfo) 2>/dev/null`
-/bin/universe          = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch              = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM  = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/yaml-0.1.3/config/config.sub b/yaml-0.1.3/config/config.sub
deleted file mode 100755
index 6759825..0000000
--- a/yaml-0.1.3/config/config.sub
+++ /dev/null
@@ -1,1658 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
-#   Free Software Foundation, Inc.
-
-timestamp='2008-01-16'
-
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine.  It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Please send patches to <config-patches@gnu.org>.  Submit a context
-# diff and a properly formatted ChangeLog entry.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support.  The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
-       $0 [OPTION] ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )	# Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help"
-       exit 1 ;;
-
-    *local*)
-       # First pass through any local machine types.
-       echo $1
-       exit ;;
-
-    * )
-       break ;;
-  esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
-    exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
-    exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
-  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
-  storm-chaos* | os2-emx* | rtmk-nova*)
-    os=-$maybe_os
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
-    ;;
-  *)
-    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
-    if [ $basic_machine != $1 ]
-    then os=`echo $1 | sed 's/.*-/-/'`
-    else os=; fi
-    ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work.  We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
-	-sun*os*)
-		# Prevent following clause from handling this invalid input.
-		;;
-	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-	-apple | -axis | -knuth | -cray)
-		os=
-		basic_machine=$1
-		;;
-	-sim | -cisco | -oki | -wec | -winbond)
-		os=
-		basic_machine=$1
-		;;
-	-scout)
-		;;
-	-wrs)
-		os=-vxworks
-		basic_machine=$1
-		;;
-	-chorusos*)
-		os=-chorusos
-		basic_machine=$1
-		;;
- 	-chorusrdb)
- 		os=-chorusrdb
-		basic_machine=$1
- 		;;
-	-hiux*)
-		os=-hiuxwe2
-		;;
-	-sco6)
-		os=-sco5v6
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco5)
-		os=-sco3.2v5
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco4)
-		os=-sco3.2v4
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco3.2.[4-9]*)
-		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco3.2v[4-9]*)
-		# Don't forget version if it is 3.2v4 or newer.
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco5v6*)
-		# Don't forget version if it is 3.2v4 or newer.
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco*)
-		os=-sco3.2v2
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-udk*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-isc)
-		os=-isc2.2
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-clix*)
-		basic_machine=clipper-intergraph
-		;;
-	-isc*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-lynx*)
-		os=-lynxos
-		;;
-	-ptx*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
-		;;
-	-windowsnt*)
-		os=`echo $os | sed -e 's/windowsnt/winnt/'`
-		;;
-	-psos*)
-		os=-psos
-		;;
-	-mint | -mint[0-9]*)
-		basic_machine=m68k-atari
-		os=-mint
-		;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
-	# Recognize the basic CPU types without company name.
-	# Some are omitted here because they have special meanings below.
-	1750a | 580 \
-	| a29k \
-	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
-	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-	| am33_2.0 \
-	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
-	| bfin \
-	| c4x | clipper \
-	| d10v | d30v | dlx | dsp16xx \
-	| fido | fr30 | frv \
-	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-	| i370 | i860 | i960 | ia64 \
-	| ip2k | iq2000 \
-	| m32c | m32r | m32rle | m68000 | m68k | m88k \
-	| maxq | mb | microblaze | mcore | mep \
-	| mips | mipsbe | mipseb | mipsel | mipsle \
-	| mips16 \
-	| mips64 | mips64el \
-	| mips64vr | mips64vrel \
-	| mips64orion | mips64orionel \
-	| mips64vr4100 | mips64vr4100el \
-	| mips64vr4300 | mips64vr4300el \
-	| mips64vr5000 | mips64vr5000el \
-	| mips64vr5900 | mips64vr5900el \
-	| mipsisa32 | mipsisa32el \
-	| mipsisa32r2 | mipsisa32r2el \
-	| mipsisa64 | mipsisa64el \
-	| mipsisa64r2 | mipsisa64r2el \
-	| mipsisa64sb1 | mipsisa64sb1el \
-	| mipsisa64sr71k | mipsisa64sr71kel \
-	| mipstx39 | mipstx39el \
-	| mn10200 | mn10300 \
-	| mt \
-	| msp430 \
-	| nios | nios2 \
-	| ns16k | ns32k \
-	| or32 \
-	| pdp10 | pdp11 | pj | pjl \
-	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
-	| pyramid \
-	| score \
-	| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
-	| sh64 | sh64le \
-	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
-	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-	| spu | strongarm \
-	| tahoe | thumb | tic4x | tic80 | tron \
-	| v850 | v850e \
-	| we32k \
-	| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
-	| z8k)
-		basic_machine=$basic_machine-unknown
-		;;
-	m6811 | m68hc11 | m6812 | m68hc12)
-		# Motorola 68HC11/12.
-		basic_machine=$basic_machine-unknown
-		os=-none
-		;;
-	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
-		;;
-	ms1)
-		basic_machine=mt-unknown
-		;;
-
-	# We use `pc' rather than `unknown'
-	# because (1) that's what they normally are, and
-	# (2) the word "unknown" tends to confuse beginning users.
-	i*86 | x86_64)
-	  basic_machine=$basic_machine-pc
-	  ;;
-	# Object if more than one company name word.
-	*-*-*)
-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-		exit 1
-		;;
-	# Recognize the basic CPU types with company name.
-	580-* \
-	| a29k-* \
-	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
-	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
-	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
-	| avr-* | avr32-* \
-	| bfin-* | bs2000-* \
-	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
-	| clipper-* | craynv-* | cydra-* \
-	| d10v-* | d30v-* | dlx-* \
-	| elxsi-* \
-	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
-	| h8300-* | h8500-* \
-	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-	| i*86-* | i860-* | i960-* | ia64-* \
-	| ip2k-* | iq2000-* \
-	| m32c-* | m32r-* | m32rle-* \
-	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-	| m88110-* | m88k-* | maxq-* | mcore-* \
-	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
-	| mips16-* \
-	| mips64-* | mips64el-* \
-	| mips64vr-* | mips64vrel-* \
-	| mips64orion-* | mips64orionel-* \
-	| mips64vr4100-* | mips64vr4100el-* \
-	| mips64vr4300-* | mips64vr4300el-* \
-	| mips64vr5000-* | mips64vr5000el-* \
-	| mips64vr5900-* | mips64vr5900el-* \
-	| mipsisa32-* | mipsisa32el-* \
-	| mipsisa32r2-* | mipsisa32r2el-* \
-	| mipsisa64-* | mipsisa64el-* \
-	| mipsisa64r2-* | mipsisa64r2el-* \
-	| mipsisa64sb1-* | mipsisa64sb1el-* \
-	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
-	| mipstx39-* | mipstx39el-* \
-	| mmix-* \
-	| mt-* \
-	| msp430-* \
-	| nios-* | nios2-* \
-	| none-* | np1-* | ns16k-* | ns32k-* \
-	| orion-* \
-	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
-	| pyramid-* \
-	| romp-* | rs6000-* \
-	| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
-	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
-	| sparclite-* \
-	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
-	| tahoe-* | thumb-* \
-	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-	| tron-* \
-	| v850-* | v850e-* | vax-* \
-	| we32k-* \
-	| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
-	| xstormy16-* | xtensa*-* \
-	| ymp-* \
-	| z8k-*)
-		;;
-	# Recognize the basic CPU types without company name, with glob match.
-	xtensa*)
-		basic_machine=$basic_machine-unknown
-		;;
-	# Recognize the various machine names and aliases which stand
-	# for a CPU type and a company and sometimes even an OS.
-	386bsd)
-		basic_machine=i386-unknown
-		os=-bsd
-		;;
-	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-		basic_machine=m68000-att
-		;;
-	3b*)
-		basic_machine=we32k-att
-		;;
-	a29khif)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-    	abacus)
-		basic_machine=abacus-unknown
-		;;
-	adobe68k)
-		basic_machine=m68010-adobe
-		os=-scout
-		;;
-	alliant | fx80)
-		basic_machine=fx80-alliant
-		;;
-	altos | altos3068)
-		basic_machine=m68k-altos
-		;;
-	am29k)
-		basic_machine=a29k-none
-		os=-bsd
-		;;
-	amd64)
-		basic_machine=x86_64-pc
-		;;
-	amd64-*)
-		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	amdahl)
-		basic_machine=580-amdahl
-		os=-sysv
-		;;
-	amiga | amiga-*)
-		basic_machine=m68k-unknown
-		;;
-	amigaos | amigados)
-		basic_machine=m68k-unknown
-		os=-amigaos
-		;;
-	amigaunix | amix)
-		basic_machine=m68k-unknown
-		os=-sysv4
-		;;
-	apollo68)
-		basic_machine=m68k-apollo
-		os=-sysv
-		;;
-	apollo68bsd)
-		basic_machine=m68k-apollo
-		os=-bsd
-		;;
-	aux)
-		basic_machine=m68k-apple
-		os=-aux
-		;;
-	balance)
-		basic_machine=ns32k-sequent
-		os=-dynix
-		;;
-	blackfin)
-		basic_machine=bfin-unknown
-		os=-linux
-		;;
-	blackfin-*)
-		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	c90)
-		basic_machine=c90-cray
-		os=-unicos
-		;;
-	convex-c1)
-		basic_machine=c1-convex
-		os=-bsd
-		;;
-	convex-c2)
-		basic_machine=c2-convex
-		os=-bsd
-		;;
-	convex-c32)
-		basic_machine=c32-convex
-		os=-bsd
-		;;
-	convex-c34)
-		basic_machine=c34-convex
-		os=-bsd
-		;;
-	convex-c38)
-		basic_machine=c38-convex
-		os=-bsd
-		;;
-	cray | j90)
-		basic_machine=j90-cray
-		os=-unicos
-		;;
-	craynv)
-		basic_machine=craynv-cray
-		os=-unicosmp
-		;;
-	cr16)
-		basic_machine=cr16-unknown
-		os=-elf
-		;;
-	crds | unos)
-		basic_machine=m68k-crds
-		;;
-	crisv32 | crisv32-* | etraxfs*)
-		basic_machine=crisv32-axis
-		;;
-	cris | cris-* | etrax*)
-		basic_machine=cris-axis
-		;;
-	crx)
-		basic_machine=crx-unknown
-		os=-elf
-		;;
-	da30 | da30-*)
-		basic_machine=m68k-da30
-		;;
-	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
-		basic_machine=mips-dec
-		;;
-	decsystem10* | dec10*)
-		basic_machine=pdp10-dec
-		os=-tops10
-		;;
-	decsystem20* | dec20*)
-		basic_machine=pdp10-dec
-		os=-tops20
-		;;
-	delta | 3300 | motorola-3300 | motorola-delta \
-	      | 3300-motorola | delta-motorola)
-		basic_machine=m68k-motorola
-		;;
-	delta88)
-		basic_machine=m88k-motorola
-		os=-sysv3
-		;;
-	djgpp)
-		basic_machine=i586-pc
-		os=-msdosdjgpp
-		;;
-	dpx20 | dpx20-*)
-		basic_machine=rs6000-bull
-		os=-bosx
-		;;
-	dpx2* | dpx2*-bull)
-		basic_machine=m68k-bull
-		os=-sysv3
-		;;
-	ebmon29k)
-		basic_machine=a29k-amd
-		os=-ebmon
-		;;
-	elxsi)
-		basic_machine=elxsi-elxsi
-		os=-bsd
-		;;
-	encore | umax | mmax)
-		basic_machine=ns32k-encore
-		;;
-	es1800 | OSE68k | ose68k | ose | OSE)
-		basic_machine=m68k-ericsson
-		os=-ose
-		;;
-	fx2800)
-		basic_machine=i860-alliant
-		;;
-	genix)
-		basic_machine=ns32k-ns
-		;;
-	gmicro)
-		basic_machine=tron-gmicro
-		os=-sysv
-		;;
-	go32)
-		basic_machine=i386-pc
-		os=-go32
-		;;
-	h3050r* | hiux*)
-		basic_machine=hppa1.1-hitachi
-		os=-hiuxwe2
-		;;
-	h8300hms)
-		basic_machine=h8300-hitachi
-		os=-hms
-		;;
-	h8300xray)
-		basic_machine=h8300-hitachi
-		os=-xray
-		;;
-	h8500hms)
-		basic_machine=h8500-hitachi
-		os=-hms
-		;;
-	harris)
-		basic_machine=m88k-harris
-		os=-sysv3
-		;;
-	hp300-*)
-		basic_machine=m68k-hp
-		;;
-	hp300bsd)
-		basic_machine=m68k-hp
-		os=-bsd
-		;;
-	hp300hpux)
-		basic_machine=m68k-hp
-		os=-hpux
-		;;
-	hp3k9[0-9][0-9] | hp9[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hp9k2[0-9][0-9] | hp9k31[0-9])
-		basic_machine=m68000-hp
-		;;
-	hp9k3[2-9][0-9])
-		basic_machine=m68k-hp
-		;;
-	hp9k6[0-9][0-9] | hp6[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hp9k7[0-79][0-9] | hp7[0-79][0-9])
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k78[0-9] | hp78[0-9])
-		# FIXME: really hppa2.0-hp
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
-		# FIXME: really hppa2.0-hp
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[0-9][13679] | hp8[0-9][13679])
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[0-9][0-9] | hp8[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hppa-next)
-		os=-nextstep3
-		;;
-	hppaosf)
-		basic_machine=hppa1.1-hp
-		os=-osf
-		;;
-	hppro)
-		basic_machine=hppa1.1-hp
-		os=-proelf
-		;;
-	i370-ibm* | ibm*)
-		basic_machine=i370-ibm
-		;;
-# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
-	i*86v32)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv32
-		;;
-	i*86v4*)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv4
-		;;
-	i*86v)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv
-		;;
-	i*86sol2)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-solaris2
-		;;
-	i386mach)
-		basic_machine=i386-mach
-		os=-mach
-		;;
-	i386-vsta | vsta)
-		basic_machine=i386-unknown
-		os=-vsta
-		;;
-	iris | iris4d)
-		basic_machine=mips-sgi
-		case $os in
-		    -irix*)
-			;;
-		    *)
-			os=-irix4
-			;;
-		esac
-		;;
-	isi68 | isi)
-		basic_machine=m68k-isi
-		os=-sysv
-		;;
-	m68knommu)
-		basic_machine=m68k-unknown
-		os=-linux
-		;;
-	m68knommu-*)
-		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	m88k-omron*)
-		basic_machine=m88k-omron
-		;;
-	magnum | m3230)
-		basic_machine=mips-mips
-		os=-sysv
-		;;
-	merlin)
-		basic_machine=ns32k-utek
-		os=-sysv
-		;;
-	mingw32)
-		basic_machine=i386-pc
-		os=-mingw32
-		;;
-	mingw32ce)
-		basic_machine=arm-unknown
-		os=-mingw32ce
-		;;
-	miniframe)
-		basic_machine=m68000-convergent
-		;;
-	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
-		basic_machine=m68k-atari
-		os=-mint
-		;;
-	mips3*-*)
-		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
-		;;
-	mips3*)
-		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
-		;;
-	monitor)
-		basic_machine=m68k-rom68k
-		os=-coff
-		;;
-	morphos)
-		basic_machine=powerpc-unknown
-		os=-morphos
-		;;
-	msdos)
-		basic_machine=i386-pc
-		os=-msdos
-		;;
-	ms1-*)
-		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
-		;;
-	mvs)
-		basic_machine=i370-ibm
-		os=-mvs
-		;;
-	ncr3000)
-		basic_machine=i486-ncr
-		os=-sysv4
-		;;
-	netbsd386)
-		basic_machine=i386-unknown
-		os=-netbsd
-		;;
-	netwinder)
-		basic_machine=armv4l-rebel
-		os=-linux
-		;;
-	news | news700 | news800 | news900)
-		basic_machine=m68k-sony
-		os=-newsos
-		;;
-	news1000)
-		basic_machine=m68030-sony
-		os=-newsos
-		;;
-	news-3600 | risc-news)
-		basic_machine=mips-sony
-		os=-newsos
-		;;
-	necv70)
-		basic_machine=v70-nec
-		os=-sysv
-		;;
-	next | m*-next )
-		basic_machine=m68k-next
-		case $os in
-		    -nextstep* )
-			;;
-		    -ns2*)
-		      os=-nextstep2
-			;;
-		    *)
-		      os=-nextstep3
-			;;
-		esac
-		;;
-	nh3000)
-		basic_machine=m68k-harris
-		os=-cxux
-		;;
-	nh[45]000)
-		basic_machine=m88k-harris
-		os=-cxux
-		;;
-	nindy960)
-		basic_machine=i960-intel
-		os=-nindy
-		;;
-	mon960)
-		basic_machine=i960-intel
-		os=-mon960
-		;;
-	nonstopux)
-		basic_machine=mips-compaq
-		os=-nonstopux
-		;;
-	np1)
-		basic_machine=np1-gould
-		;;
-	nsr-tandem)
-		basic_machine=nsr-tandem
-		;;
-	op50n-* | op60c-*)
-		basic_machine=hppa1.1-oki
-		os=-proelf
-		;;
-	openrisc | openrisc-*)
-		basic_machine=or32-unknown
-		;;
-	os400)
-		basic_machine=powerpc-ibm
-		os=-os400
-		;;
-	OSE68000 | ose68000)
-		basic_machine=m68000-ericsson
-		os=-ose
-		;;
-	os68k)
-		basic_machine=m68k-none
-		os=-os68k
-		;;
-	pa-hitachi)
-		basic_machine=hppa1.1-hitachi
-		os=-hiuxwe2
-		;;
-	paragon)
-		basic_machine=i860-intel
-		os=-osf
-		;;
-	parisc)
-		basic_machine=hppa-unknown
-		os=-linux
-		;;
-	parisc-*)
-		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	pbd)
-		basic_machine=sparc-tti
-		;;
-	pbb)
-		basic_machine=m68k-tti
-		;;
-	pc532 | pc532-*)
-		basic_machine=ns32k-pc532
-		;;
-	pc98)
-		basic_machine=i386-pc
-		;;
-	pc98-*)
-		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentium | p5 | k5 | k6 | nexgen | viac3)
-		basic_machine=i586-pc
-		;;
-	pentiumpro | p6 | 6x86 | athlon | athlon_*)
-		basic_machine=i686-pc
-		;;
-	pentiumii | pentium2 | pentiumiii | pentium3)
-		basic_machine=i686-pc
-		;;
-	pentium4)
-		basic_machine=i786-pc
-		;;
-	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentiumpro-* | p6-* | 6x86-* | athlon-*)
-		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
-		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentium4-*)
-		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pn)
-		basic_machine=pn-gould
-		;;
-	power)	basic_machine=power-ibm
-		;;
-	ppc)	basic_machine=powerpc-unknown
-		;;
-	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppcle | powerpclittle | ppc-le | powerpc-little)
-		basic_machine=powerpcle-unknown
-		;;
-	ppcle-* | powerpclittle-*)
-		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppc64)	basic_machine=powerpc64-unknown
-		;;
-	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
-		basic_machine=powerpc64le-unknown
-		;;
-	ppc64le-* | powerpc64little-*)
-		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ps2)
-		basic_machine=i386-ibm
-		;;
-	pw32)
-		basic_machine=i586-unknown
-		os=-pw32
-		;;
-	rdos)
-		basic_machine=i386-pc
-		os=-rdos
-		;;
-	rom68k)
-		basic_machine=m68k-rom68k
-		os=-coff
-		;;
-	rm[46]00)
-		basic_machine=mips-siemens
-		;;
-	rtpc | rtpc-*)
-		basic_machine=romp-ibm
-		;;
-	s390 | s390-*)
-		basic_machine=s390-ibm
-		;;
-	s390x | s390x-*)
-		basic_machine=s390x-ibm
-		;;
-	sa29200)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	sb1)
-		basic_machine=mipsisa64sb1-unknown
-		;;
-	sb1el)
-		basic_machine=mipsisa64sb1el-unknown
-		;;
-	sde)
-		basic_machine=mipsisa32-sde
-		os=-elf
-		;;
-	sei)
-		basic_machine=mips-sei
-		os=-seiux
-		;;
-	sequent)
-		basic_machine=i386-sequent
-		;;
-	sh)
-		basic_machine=sh-hitachi
-		os=-hms
-		;;
-	sh5el)
-		basic_machine=sh5le-unknown
-		;;
-	sh64)
-		basic_machine=sh64-unknown
-		;;
-	sparclite-wrs | simso-wrs)
-		basic_machine=sparclite-wrs
-		os=-vxworks
-		;;
-	sps7)
-		basic_machine=m68k-bull
-		os=-sysv2
-		;;
-	spur)
-		basic_machine=spur-unknown
-		;;
-	st2000)
-		basic_machine=m68k-tandem
-		;;
-	stratus)
-		basic_machine=i860-stratus
-		os=-sysv4
-		;;
-	sun2)
-		basic_machine=m68000-sun
-		;;
-	sun2os3)
-		basic_machine=m68000-sun
-		os=-sunos3
-		;;
-	sun2os4)
-		basic_machine=m68000-sun
-		os=-sunos4
-		;;
-	sun3os3)
-		basic_machine=m68k-sun
-		os=-sunos3
-		;;
-	sun3os4)
-		basic_machine=m68k-sun
-		os=-sunos4
-		;;
-	sun4os3)
-		basic_machine=sparc-sun
-		os=-sunos3
-		;;
-	sun4os4)
-		basic_machine=sparc-sun
-		os=-sunos4
-		;;
-	sun4sol2)
-		basic_machine=sparc-sun
-		os=-solaris2
-		;;
-	sun3 | sun3-*)
-		basic_machine=m68k-sun
-		;;
-	sun4)
-		basic_machine=sparc-sun
-		;;
-	sun386 | sun386i | roadrunner)
-		basic_machine=i386-sun
-		;;
-	sv1)
-		basic_machine=sv1-cray
-		os=-unicos
-		;;
-	symmetry)
-		basic_machine=i386-sequent
-		os=-dynix
-		;;
-	t3e)
-		basic_machine=alphaev5-cray
-		os=-unicos
-		;;
-	t90)
-		basic_machine=t90-cray
-		os=-unicos
-		;;
-	tic54x | c54x*)
-		basic_machine=tic54x-unknown
-		os=-coff
-		;;
-	tic55x | c55x*)
-		basic_machine=tic55x-unknown
-		os=-coff
-		;;
-	tic6x | c6x*)
-		basic_machine=tic6x-unknown
-		os=-coff
-		;;
-	tile*)
-		basic_machine=tile-unknown
-		os=-linux-gnu
-		;;
-	tx39)
-		basic_machine=mipstx39-unknown
-		;;
-	tx39el)
-		basic_machine=mipstx39el-unknown
-		;;
-	toad1)
-		basic_machine=pdp10-xkl
-		os=-tops20
-		;;
-	tower | tower-32)
-		basic_machine=m68k-ncr
-		;;
-	tpf)
-		basic_machine=s390x-ibm
-		os=-tpf
-		;;
-	udi29k)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	ultra3)
-		basic_machine=a29k-nyu
-		os=-sym1
-		;;
-	v810 | necv810)
-		basic_machine=v810-nec
-		os=-none
-		;;
-	vaxv)
-		basic_machine=vax-dec
-		os=-sysv
-		;;
-	vms)
-		basic_machine=vax-dec
-		os=-vms
-		;;
-	vpp*|vx|vx-*)
-		basic_machine=f301-fujitsu
-		;;
-	vxworks960)
-		basic_machine=i960-wrs
-		os=-vxworks
-		;;
-	vxworks68)
-		basic_machine=m68k-wrs
-		os=-vxworks
-		;;
-	vxworks29k)
-		basic_machine=a29k-wrs
-		os=-vxworks
-		;;
-	w65*)
-		basic_machine=w65-wdc
-		os=-none
-		;;
-	w89k-*)
-		basic_machine=hppa1.1-winbond
-		os=-proelf
-		;;
-	xbox)
-		basic_machine=i686-pc
-		os=-mingw32
-		;;
-	xps | xps100)
-		basic_machine=xps100-honeywell
-		;;
-	ymp)
-		basic_machine=ymp-cray
-		os=-unicos
-		;;
-	z8k-*-coff)
-		basic_machine=z8k-unknown
-		os=-sim
-		;;
-	none)
-		basic_machine=none-none
-		os=-none
-		;;
-
-# Here we handle the default manufacturer of certain CPU types.  It is in
-# some cases the only manufacturer, in others, it is the most popular.
-	w89k)
-		basic_machine=hppa1.1-winbond
-		;;
-	op50n)
-		basic_machine=hppa1.1-oki
-		;;
-	op60c)
-		basic_machine=hppa1.1-oki
-		;;
-	romp)
-		basic_machine=romp-ibm
-		;;
-	mmix)
-		basic_machine=mmix-knuth
-		;;
-	rs6000)
-		basic_machine=rs6000-ibm
-		;;
-	vax)
-		basic_machine=vax-dec
-		;;
-	pdp10)
-		# there are many clones, so DEC is not a safe bet
-		basic_machine=pdp10-unknown
-		;;
-	pdp11)
-		basic_machine=pdp11-dec
-		;;
-	we32k)
-		basic_machine=we32k-att
-		;;
-	sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
-		basic_machine=sh-unknown
-		;;
-	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
-		basic_machine=sparc-sun
-		;;
-	cydra)
-		basic_machine=cydra-cydrome
-		;;
-	orion)
-		basic_machine=orion-highlevel
-		;;
-	orion105)
-		basic_machine=clipper-highlevel
-		;;
-	mac | mpw | mac-mpw)
-		basic_machine=m68k-apple
-		;;
-	pmac | pmac-mpw)
-		basic_machine=powerpc-apple
-		;;
-	*-unknown)
-		# Make sure to match an already-canonicalized machine name.
-		;;
-	*)
-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-		exit 1
-		;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
-	*-digital*)
-		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
-		;;
-	*-commodore*)
-		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
-		;;
-	*)
-		;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
-        # First match some system type aliases
-        # that might get confused with valid system types.
-	# -solaris* is a basic system type, with this one exception.
-	-solaris1 | -solaris1.*)
-		os=`echo $os | sed -e 's|solaris1|sunos4|'`
-		;;
-	-solaris)
-		os=-solaris2
-		;;
-	-svr4*)
-		os=-sysv4
-		;;
-	-unixware*)
-		os=-sysv4.2uw
-		;;
-	-gnu/linux*)
-		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
-		;;
-	# First accept the basic system types.
-	# The portable systems comes first.
-	# Each alternative MUST END IN A *, to match a version number.
-	# -sysv* is not here because it comes later, after sysvr4.
-	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
-	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
-	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
-	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-	      | -aos* \
-	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
-	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-	      | -openbsd* | -solidbsd* \
-	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
-	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
-	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
-	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-	      | -chorusos* | -chorusrdb* \
-	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
-	      | -uxpv* | -beos* | -mpeix* | -udk* \
-	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
-	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
-	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
-	# Remember, each alternative MUST END IN *, to match a version number.
-		;;
-	-qnx*)
-		case $basic_machine in
-		    x86-* | i*86-*)
-			;;
-		    *)
-			os=-nto$os
-			;;
-		esac
-		;;
-	-nto-qnx*)
-		;;
-	-nto*)
-		os=`echo $os | sed -e 's|nto|nto-qnx|'`
-		;;
-	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
-	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
-	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
-		;;
-	-mac*)
-		os=`echo $os | sed -e 's|mac|macos|'`
-		;;
-	-linux-dietlibc)
-		os=-linux-dietlibc
-		;;
-	-linux*)
-		os=`echo $os | sed -e 's|linux|linux-gnu|'`
-		;;
-	-sunos5*)
-		os=`echo $os | sed -e 's|sunos5|solaris2|'`
-		;;
-	-sunos6*)
-		os=`echo $os | sed -e 's|sunos6|solaris3|'`
-		;;
-	-opened*)
-		os=-openedition
-		;;
-        -os400*)
-		os=-os400
-		;;
-	-wince*)
-		os=-wince
-		;;
-	-osfrose*)
-		os=-osfrose
-		;;
-	-osf*)
-		os=-osf
-		;;
-	-utek*)
-		os=-bsd
-		;;
-	-dynix*)
-		os=-bsd
-		;;
-	-acis*)
-		os=-aos
-		;;
-	-atheos*)
-		os=-atheos
-		;;
-	-syllable*)
-		os=-syllable
-		;;
-	-386bsd)
-		os=-bsd
-		;;
-	-ctix* | -uts*)
-		os=-sysv
-		;;
-	-nova*)
-		os=-rtmk-nova
-		;;
-	-ns2 )
-		os=-nextstep2
-		;;
-	-nsk*)
-		os=-nsk
-		;;
-	# Preserve the version number of sinix5.
-	-sinix5.*)
-		os=`echo $os | sed -e 's|sinix|sysv|'`
-		;;
-	-sinix*)
-		os=-sysv4
-		;;
-        -tpf*)
-		os=-tpf
-		;;
-	-triton*)
-		os=-sysv3
-		;;
-	-oss*)
-		os=-sysv3
-		;;
-	-svr4)
-		os=-sysv4
-		;;
-	-svr3)
-		os=-sysv3
-		;;
-	-sysvr4)
-		os=-sysv4
-		;;
-	# This must come after -sysvr4.
-	-sysv*)
-		;;
-	-ose*)
-		os=-ose
-		;;
-	-es1800*)
-		os=-ose
-		;;
-	-xenix)
-		os=-xenix
-		;;
-	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-		os=-mint
-		;;
-	-aros*)
-		os=-aros
-		;;
-	-kaos*)
-		os=-kaos
-		;;
-	-zvmoe)
-		os=-zvmoe
-		;;
-	-none)
-		;;
-	*)
-		# Get rid of the `-' at the beginning of $os.
-		os=`echo $os | sed 's/[^-]*-//'`
-		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
-		exit 1
-		;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system.  Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
-        score-*)
-		os=-elf
-		;;
-        spu-*)
-		os=-elf
-		;;
-	*-acorn)
-		os=-riscix1.2
-		;;
-	arm*-rebel)
-		os=-linux
-		;;
-	arm*-semi)
-		os=-aout
-		;;
-        c4x-* | tic4x-*)
-        	os=-coff
-		;;
-	# This must come before the *-dec entry.
-	pdp10-*)
-		os=-tops20
-		;;
-	pdp11-*)
-		os=-none
-		;;
-	*-dec | vax-*)
-		os=-ultrix4.2
-		;;
-	m68*-apollo)
-		os=-domain
-		;;
-	i386-sun)
-		os=-sunos4.0.2
-		;;
-	m68000-sun)
-		os=-sunos3
-		# This also exists in the configure program, but was not the
-		# default.
-		# os=-sunos4
-		;;
-	m68*-cisco)
-		os=-aout
-		;;
-        mep-*)
-		os=-elf
-		;;
-	mips*-cisco)
-		os=-elf
-		;;
-	mips*-*)
-		os=-elf
-		;;
-	or32-*)
-		os=-coff
-		;;
-	*-tti)	# must be before sparc entry or we get the wrong os.
-		os=-sysv3
-		;;
-	sparc-* | *-sun)
-		os=-sunos4.1.1
-		;;
-	*-be)
-		os=-beos
-		;;
-	*-haiku)
-		os=-haiku
-		;;
-	*-ibm)
-		os=-aix
-		;;
-    	*-knuth)
-		os=-mmixware
-		;;
-	*-wec)
-		os=-proelf
-		;;
-	*-winbond)
-		os=-proelf
-		;;
-	*-oki)
-		os=-proelf
-		;;
-	*-hp)
-		os=-hpux
-		;;
-	*-hitachi)
-		os=-hiux
-		;;
-	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-		os=-sysv
-		;;
-	*-cbm)
-		os=-amigaos
-		;;
-	*-dg)
-		os=-dgux
-		;;
-	*-dolphin)
-		os=-sysv3
-		;;
-	m68k-ccur)
-		os=-rtu
-		;;
-	m88k-omron*)
-		os=-luna
-		;;
-	*-next )
-		os=-nextstep
-		;;
-	*-sequent)
-		os=-ptx
-		;;
-	*-crds)
-		os=-unos
-		;;
-	*-ns)
-		os=-genix
-		;;
-	i370-*)
-		os=-mvs
-		;;
-	*-next)
-		os=-nextstep3
-		;;
-	*-gould)
-		os=-sysv
-		;;
-	*-highlevel)
-		os=-bsd
-		;;
-	*-encore)
-		os=-bsd
-		;;
-	*-sgi)
-		os=-irix
-		;;
-	*-siemens)
-		os=-sysv4
-		;;
-	*-masscomp)
-		os=-rtu
-		;;
-	f30[01]-fujitsu | f700-fujitsu)
-		os=-uxpv
-		;;
-	*-rom68k)
-		os=-coff
-		;;
-	*-*bug)
-		os=-coff
-		;;
-	*-apple)
-		os=-macos
-		;;
-	*-atari*)
-		os=-mint
-		;;
-	*)
-		os=-none
-		;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer.  We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
-	*-unknown)
-		case $os in
-			-riscix*)
-				vendor=acorn
-				;;
-			-sunos*)
-				vendor=sun
-				;;
-			-aix*)
-				vendor=ibm
-				;;
-			-beos*)
-				vendor=be
-				;;
-			-hpux*)
-				vendor=hp
-				;;
-			-mpeix*)
-				vendor=hp
-				;;
-			-hiux*)
-				vendor=hitachi
-				;;
-			-unos*)
-				vendor=crds
-				;;
-			-dgux*)
-				vendor=dg
-				;;
-			-luna*)
-				vendor=omron
-				;;
-			-genix*)
-				vendor=ns
-				;;
-			-mvs* | -opened*)
-				vendor=ibm
-				;;
-			-os400*)
-				vendor=ibm
-				;;
-			-ptx*)
-				vendor=sequent
-				;;
-			-tpf*)
-				vendor=ibm
-				;;
-			-vxsim* | -vxworks* | -windiss*)
-				vendor=wrs
-				;;
-			-aux*)
-				vendor=apple
-				;;
-			-hms*)
-				vendor=hitachi
-				;;
-			-mpw* | -macos*)
-				vendor=apple
-				;;
-			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-				vendor=atari
-				;;
-			-vos*)
-				vendor=stratus
-				;;
-		esac
-		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
-		;;
-esac
-
-echo $basic_machine$os
-exit
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/yaml-0.1.3/config/depcomp b/yaml-0.1.3/config/depcomp
deleted file mode 100755
index e5f9736..0000000
--- a/yaml-0.1.3/config/depcomp
+++ /dev/null
@@ -1,589 +0,0 @@
-#! /bin/sh
-# depcomp - compile a program generating dependencies as side-effects
-
-scriptversion=2007-03-29.01
-
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software
-# Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
-
-case $1 in
-  '')
-     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
-     exit 1;
-     ;;
-  -h | --h*)
-    cat <<\EOF
-Usage: depcomp [--help] [--version] PROGRAM [ARGS]
-
-Run PROGRAMS ARGS to compile a file, generating dependencies
-as side-effects.
-
-Environment variables:
-  depmode     Dependency tracking mode.
-  source      Source file read by `PROGRAMS ARGS'.
-  object      Object file output by `PROGRAMS ARGS'.
-  DEPDIR      directory where to store dependencies.
-  depfile     Dependency file to output.
-  tmpdepfile  Temporary file to use when outputing dependencies.
-  libtool     Whether libtool is used (yes/no).
-
-Report bugs to <bug-automake@gnu.org>.
-EOF
-    exit $?
-    ;;
-  -v | --v*)
-    echo "depcomp $scriptversion"
-    exit $?
-    ;;
-esac
-
-if test -z "$depmode" || test -z "$source" || test -z "$object"; then
-  echo "depcomp: Variables source, object and depmode must be set" 1>&2
-  exit 1
-fi
-
-# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
-depfile=${depfile-`echo "$object" |
-  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
-tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
-
-rm -f "$tmpdepfile"
-
-# Some modes work just like other modes, but use different flags.  We
-# parameterize here, but still list the modes in the big case below,
-# to make depend.m4 easier to write.  Note that we *cannot* use a case
-# here, because this file can only contain one case statement.
-if test "$depmode" = hp; then
-  # HP compiler uses -M and no extra arg.
-  gccflag=-M
-  depmode=gcc
-fi
-
-if test "$depmode" = dashXmstdout; then
-   # This is just like dashmstdout with a different argument.
-   dashmflag=-xM
-   depmode=dashmstdout
-fi
-
-case "$depmode" in
-gcc3)
-## gcc 3 implements dependency tracking that does exactly what
-## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
-## it if -MD -MP comes after the -MF stuff.  Hmm.
-## Unfortunately, FreeBSD c89 acceptance of flags depends upon
-## the command line argument order; so add the flags where they
-## appear in depend2.am.  Note that the slowdown incurred here
-## affects only configure: in makefiles, %FASTDEP% shortcuts this.
-  for arg
-  do
-    case $arg in
-    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
-    *)  set fnord "$@" "$arg" ;;
-    esac
-    shift # fnord
-    shift # $arg
-  done
-  "$@"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  mv "$tmpdepfile" "$depfile"
-  ;;
-
-gcc)
-## There are various ways to get dependency output from gcc.  Here's
-## why we pick this rather obscure method:
-## - Don't want to use -MD because we'd like the dependencies to end
-##   up in a subdir.  Having to rename by hand is ugly.
-##   (We might end up doing this anyway to support other compilers.)
-## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-##   -MM, not -M (despite what the docs say).
-## - Using -M directly means running the compiler twice (even worse
-##   than renaming).
-  if test -z "$gccflag"; then
-    gccflag=-MD,
-  fi
-  "$@" -Wp,"$gccflag$tmpdepfile"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## The second -e expression handles DOS-style file names with drive letters.
-  sed -e 's/^[^:]*: / /' \
-      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the `deleted header file' problem.
-## The problem is that when a header file which appears in a .P file
-## is deleted, the dependency causes make to die (because there is
-## typically no way to rebuild the header).  We avoid this by adding
-## dummy dependencies for each header file.  Too bad gcc doesn't do
-## this for us directly.
-  tr ' ' '
-' < "$tmpdepfile" |
-## Some versions of gcc put a space before the `:'.  On the theory
-## that the space means something, we add a space to the output as
-## well.
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-hp)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-sgi)
-  if test "$libtool" = yes; then
-    "$@" "-Wp,-MDupdate,$tmpdepfile"
-  else
-    "$@" -MDupdate "$tmpdepfile"
-  fi
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-
-  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
-    echo "$object : \\" > "$depfile"
-
-    # Clip off the initial element (the dependent).  Don't try to be
-    # clever and replace this with sed code, as IRIX sed won't handle
-    # lines with more than a fixed number of characters (4096 in
-    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
-    # the IRIX cc adds comments like `#:fec' to the end of the
-    # dependency line.
-    tr ' ' '
-' < "$tmpdepfile" \
-    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
-    tr '
-' ' ' >> $depfile
-    echo >> $depfile
-
-    # The second pass generates a dummy entry for each header file.
-    tr ' ' '
-' < "$tmpdepfile" \
-   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
-   >> $depfile
-  else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
-  fi
-  rm -f "$tmpdepfile"
-  ;;
-
-aix)
-  # The C for AIX Compiler uses -M and outputs the dependencies
-  # in a .u file.  In older versions, this file always lives in the
-  # current directory.  Also, the AIX compiler puts `$object:' at the
-  # start of each line; $object doesn't have directory information.
-  # Version 6 uses the directory in both cases.
-  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-  test "x$dir" = "x$object" && dir=
-  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-  if test "$libtool" = yes; then
-    tmpdepfile1=$dir$base.u
-    tmpdepfile2=$base.u
-    tmpdepfile3=$dir.libs/$base.u
-    "$@" -Wc,-M
-  else
-    tmpdepfile1=$dir$base.u
-    tmpdepfile2=$dir$base.u
-    tmpdepfile3=$dir$base.u
-    "$@" -M
-  fi
-  stat=$?
-
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-    exit $stat
-  fi
-
-  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-  do
-    test -f "$tmpdepfile" && break
-  done
-  if test -f "$tmpdepfile"; then
-    # Each line is of the form `foo.o: dependent.h'.
-    # Do two passes, one to just change these to
-    # `$object: dependent.h' and one to simply `dependent.h:'.
-    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-    # That's a tab and a space in the [].
-    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-  else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
-  fi
-  rm -f "$tmpdepfile"
-  ;;
-
-icc)
-  # Intel's C compiler understands `-MD -MF file'.  However on
-  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
-  # ICC 7.0 will fill foo.d with something like
-  #    foo.o: sub/foo.c
-  #    foo.o: sub/foo.h
-  # which is wrong.  We want:
-  #    sub/foo.o: sub/foo.c
-  #    sub/foo.o: sub/foo.h
-  #    sub/foo.c:
-  #    sub/foo.h:
-  # ICC 7.1 will output
-  #    foo.o: sub/foo.c sub/foo.h
-  # and will wrap long lines using \ :
-  #    foo.o: sub/foo.c ... \
-  #     sub/foo.h ... \
-  #     ...
-
-  "$@" -MD -MF "$tmpdepfile"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  # Each line is of the form `foo.o: dependent.h',
-  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
-  # Do two passes, one to just change these to
-  # `$object: dependent.h' and one to simply `dependent.h:'.
-  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
-  # Some versions of the HPUX 10.20 sed can't process this invocation
-  # correctly.  Breaking it into two sed invocations is a workaround.
-  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
-    sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-hp2)
-  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
-  # compilers, which have integrated preprocessors.  The correct option
-  # to use with these is +Maked; it writes dependencies to a file named
-  # 'foo.d', which lands next to the object file, wherever that
-  # happens to be.
-  # Much of this is similar to the tru64 case; see comments there.
-  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-  test "x$dir" = "x$object" && dir=
-  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-  if test "$libtool" = yes; then
-    tmpdepfile1=$dir$base.d
-    tmpdepfile2=$dir.libs/$base.d
-    "$@" -Wc,+Maked
-  else
-    tmpdepfile1=$dir$base.d
-    tmpdepfile2=$dir$base.d
-    "$@" +Maked
-  fi
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-     rm -f "$tmpdepfile1" "$tmpdepfile2"
-     exit $stat
-  fi
-
-  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
-  do
-    test -f "$tmpdepfile" && break
-  done
-  if test -f "$tmpdepfile"; then
-    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
-    # Add `dependent.h:' lines.
-    sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
-  else
-    echo "#dummy" > "$depfile"
-  fi
-  rm -f "$tmpdepfile" "$tmpdepfile2"
-  ;;
-
-tru64)
-   # The Tru64 compiler uses -MD to generate dependencies as a side
-   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
-   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
-   # dependencies in `foo.d' instead, so we check for that too.
-   # Subdirectories are respected.
-   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-   test "x$dir" = "x$object" && dir=
-   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
-   if test "$libtool" = yes; then
-      # With Tru64 cc, shared objects can also be used to make a
-      # static library.  This mechanism is used in libtool 1.4 series to
-      # handle both shared and static libraries in a single compilation.
-      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
-      #
-      # With libtool 1.5 this exception was removed, and libtool now
-      # generates 2 separate objects for the 2 libraries.  These two
-      # compilations output dependencies in $dir.libs/$base.o.d and
-      # in $dir$base.o.d.  We have to check for both files, because
-      # one of the two compilations can be disabled.  We should prefer
-      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
-      # automatically cleaned when .libs/ is deleted, while ignoring
-      # the former would cause a distcleancheck panic.
-      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
-      tmpdepfile2=$dir$base.o.d          # libtool 1.5
-      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
-      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
-      "$@" -Wc,-MD
-   else
-      tmpdepfile1=$dir$base.o.d
-      tmpdepfile2=$dir$base.d
-      tmpdepfile3=$dir$base.d
-      tmpdepfile4=$dir$base.d
-      "$@" -MD
-   fi
-
-   stat=$?
-   if test $stat -eq 0; then :
-   else
-      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-      exit $stat
-   fi
-
-   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-   do
-     test -f "$tmpdepfile" && break
-   done
-   if test -f "$tmpdepfile"; then
-      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-      # That's a tab and a space in the [].
-      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-   else
-      echo "#dummy" > "$depfile"
-   fi
-   rm -f "$tmpdepfile"
-   ;;
-
-#nosideeffect)
-  # This comment above is used by automake to tell side-effect
-  # dependency tracking mechanisms from slower ones.
-
-dashmstdout)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout, regardless of -o.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test $1 != '--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  # Remove `-o $object'.
-  IFS=" "
-  for arg
-  do
-    case $arg in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    *)
-      set fnord "$@" "$arg"
-      shift # fnord
-      shift # $arg
-      ;;
-    esac
-  done
-
-  test -z "$dashmflag" && dashmflag=-M
-  # Require at least two characters before searching for `:'
-  # in the target name.  This is to cope with DOS-style filenames:
-  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
-  "$@" $dashmflag |
-    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
-  rm -f "$depfile"
-  cat < "$tmpdepfile" > "$depfile"
-  tr ' ' '
-' < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-dashXmstdout)
-  # This case only exists to satisfy depend.m4.  It is never actually
-  # run, as this mode is specially recognized in the preamble.
-  exit 1
-  ;;
-
-makedepend)
-  "$@" || exit $?
-  # Remove any Libtool call
-  if test "$libtool" = yes; then
-    while test $1 != '--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-  # X makedepend
-  shift
-  cleared=no
-  for arg in "$@"; do
-    case $cleared in
-    no)
-      set ""; shift
-      cleared=yes ;;
-    esac
-    case "$arg" in
-    -D*|-I*)
-      set fnord "$@" "$arg"; shift ;;
-    # Strip any option that makedepend may not understand.  Remove
-    # the object too, otherwise makedepend will parse it as a source file.
-    -*|$object)
-      ;;
-    *)
-      set fnord "$@" "$arg"; shift ;;
-    esac
-  done
-  obj_suffix="`echo $object | sed 's/^.*\././'`"
-  touch "$tmpdepfile"
-  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
-  rm -f "$depfile"
-  cat < "$tmpdepfile" > "$depfile"
-  sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile" "$tmpdepfile".bak
-  ;;
-
-cpp)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test $1 != '--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  # Remove `-o $object'.
-  IFS=" "
-  for arg
-  do
-    case $arg in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    *)
-      set fnord "$@" "$arg"
-      shift # fnord
-      shift # $arg
-      ;;
-    esac
-  done
-
-  "$@" -E |
-    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
-    sed '$ s: \\$::' > "$tmpdepfile"
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  cat < "$tmpdepfile" >> "$depfile"
-  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-msvisualcpp)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout, regardless of -o,
-  # because we must use -o when running libtool.
-  "$@" || exit $?
-  IFS=" "
-  for arg
-  do
-    case "$arg" in
-    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
-	set fnord "$@"
-	shift
-	shift
-	;;
-    *)
-	set fnord "$@" "$arg"
-	shift
-	shift
-	;;
-    esac
-  done
-  "$@" -E |
-  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
-  echo "	" >> "$depfile"
-  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-none)
-  exec "$@"
-  ;;
-
-*)
-  echo "Unknown depmode $depmode" 1>&2
-  exit 1
-  ;;
-esac
-
-exit 0
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:
diff --git a/yaml-0.1.3/config/install-sh b/yaml-0.1.3/config/install-sh
deleted file mode 100755
index a5897de..0000000
--- a/yaml-0.1.3/config/install-sh
+++ /dev/null
@@ -1,519 +0,0 @@
-#!/bin/sh
-# install - install a program, script, or datafile
-
-scriptversion=2006-12-25.00
-
-# This originates from X11R5 (mit/util/scripts/install.sh), which was
-# later released in X11R6 (xc/config/util/install.sh) with the
-# following copyright and license.
-#
-# Copyright (C) 1994 X Consortium
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to
-# deal in the Software without restriction, including without limitation the
-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
-# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-# Except as contained in this notice, the name of the X Consortium shall not
-# be used in advertising or otherwise to promote the sale, use or other deal-
-# ings in this Software without prior written authorization from the X Consor-
-# tium.
-#
-#
-# FSF changes to this file are in the public domain.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-
-nl='
-'
-IFS=" ""	$nl"
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit=${DOITPROG-}
-if test -z "$doit"; then
-  doit_exec=exec
-else
-  doit_exec=$doit
-fi
-
-# Put in absolute file names if you don't have them in your path;
-# or use environment vars.
-
-chgrpprog=${CHGRPPROG-chgrp}
-chmodprog=${CHMODPROG-chmod}
-chownprog=${CHOWNPROG-chown}
-cmpprog=${CMPPROG-cmp}
-cpprog=${CPPROG-cp}
-mkdirprog=${MKDIRPROG-mkdir}
-mvprog=${MVPROG-mv}
-rmprog=${RMPROG-rm}
-stripprog=${STRIPPROG-strip}
-
-posix_glob='?'
-initialize_posix_glob='
-  test "$posix_glob" != "?" || {
-    if (set -f) 2>/dev/null; then
-      posix_glob=
-    else
-      posix_glob=:
-    fi
-  }
-'
-
-posix_mkdir=
-
-# Desired mode of installed file.
-mode=0755
-
-chgrpcmd=
-chmodcmd=$chmodprog
-chowncmd=
-mvcmd=$mvprog
-rmcmd="$rmprog -f"
-stripcmd=
-
-src=
-dst=
-dir_arg=
-dst_arg=
-
-copy_on_change=false
-no_target_directory=
-
-usage="\
-Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
-   or: $0 [OPTION]... SRCFILES... DIRECTORY
-   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
-   or: $0 [OPTION]... -d DIRECTORIES...
-
-In the 1st form, copy SRCFILE to DSTFILE.
-In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
-In the 4th, create DIRECTORIES.
-
-Options:
-     --help     display this help and exit.
-     --version  display version info and exit.
-
-  -c            (ignored)
-  -C            install only if different (preserve the last data modification time)
-  -d            create directories instead of installing files.
-  -g GROUP      $chgrpprog installed files to GROUP.
-  -m MODE       $chmodprog installed files to MODE.
-  -o USER       $chownprog installed files to USER.
-  -s            $stripprog installed files.
-  -t DIRECTORY  install into DIRECTORY.
-  -T            report an error if DSTFILE is a directory.
-
-Environment variables override the default commands:
-  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
-  RMPROG STRIPPROG
-"
-
-while test $# -ne 0; do
-  case $1 in
-    -c) ;;
-
-    -C) copy_on_change=true;;
-
-    -d) dir_arg=true;;
-
-    -g) chgrpcmd="$chgrpprog $2"
-	shift;;
-
-    --help) echo "$usage"; exit $?;;
-
-    -m) mode=$2
-	case $mode in
-	  *' '* | *'	'* | *'
-'*	  | *'*'* | *'?'* | *'['*)
-	    echo "$0: invalid mode: $mode" >&2
-	    exit 1;;
-	esac
-	shift;;
-
-    -o) chowncmd="$chownprog $2"
-	shift;;
-
-    -s) stripcmd=$stripprog;;
-
-    -t) dst_arg=$2
-	shift;;
-
-    -T) no_target_directory=true;;
-
-    --version) echo "$0 $scriptversion"; exit $?;;
-
-    --)	shift
-	break;;
-
-    -*)	echo "$0: invalid option: $1" >&2
-	exit 1;;
-
-    *)  break;;
-  esac
-  shift
-done
-
-if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
-  # When -d is used, all remaining arguments are directories to create.
-  # When -t is used, the destination is already specified.
-  # Otherwise, the last argument is the destination.  Remove it from $@.
-  for arg
-  do
-    if test -n "$dst_arg"; then
-      # $@ is not empty: it contains at least $arg.
-      set fnord "$@" "$dst_arg"
-      shift # fnord
-    fi
-    shift # arg
-    dst_arg=$arg
-  done
-fi
-
-if test $# -eq 0; then
-  if test -z "$dir_arg"; then
-    echo "$0: no input file specified." >&2
-    exit 1
-  fi
-  # It's OK to call `install-sh -d' without argument.
-  # This can happen when creating conditional directories.
-  exit 0
-fi
-
-if test -z "$dir_arg"; then
-  trap '(exit $?); exit' 1 2 13 15
-
-  # Set umask so as not to create temps with too-generous modes.
-  # However, 'strip' requires both read and write access to temps.
-  case $mode in
-    # Optimize common cases.
-    *644) cp_umask=133;;
-    *755) cp_umask=22;;
-
-    *[0-7])
-      if test -z "$stripcmd"; then
-	u_plus_rw=
-      else
-	u_plus_rw='% 200'
-      fi
-      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
-    *)
-      if test -z "$stripcmd"; then
-	u_plus_rw=
-      else
-	u_plus_rw=,u+rw
-      fi
-      cp_umask=$mode$u_plus_rw;;
-  esac
-fi
-
-for src
-do
-  # Protect names starting with `-'.
-  case $src in
-    -*) src=./$src;;
-  esac
-
-  if test -n "$dir_arg"; then
-    dst=$src
-    dstdir=$dst
-    test -d "$dstdir"
-    dstdir_status=$?
-  else
-
-    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
-    # might cause directories to be created, which would be especially bad
-    # if $src (and thus $dsttmp) contains '*'.
-    if test ! -f "$src" && test ! -d "$src"; then
-      echo "$0: $src does not exist." >&2
-      exit 1
-    fi
-
-    if test -z "$dst_arg"; then
-      echo "$0: no destination specified." >&2
-      exit 1
-    fi
-
-    dst=$dst_arg
-    # Protect names starting with `-'.
-    case $dst in
-      -*) dst=./$dst;;
-    esac
-
-    # If destination is a directory, append the input filename; won't work
-    # if double slashes aren't ignored.
-    if test -d "$dst"; then
-      if test -n "$no_target_directory"; then
-	echo "$0: $dst_arg: Is a directory" >&2
-	exit 1
-      fi
-      dstdir=$dst
-      dst=$dstdir/`basename "$src"`
-      dstdir_status=0
-    else
-      # Prefer dirname, but fall back on a substitute if dirname fails.
-      dstdir=`
-	(dirname "$dst") 2>/dev/null ||
-	expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	     X"$dst" : 'X\(//\)[^/]' \| \
-	     X"$dst" : 'X\(//\)$' \| \
-	     X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
-	echo X"$dst" |
-	    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-		   s//\1/
-		   q
-		 }
-		 /^X\(\/\/\)[^/].*/{
-		   s//\1/
-		   q
-		 }
-		 /^X\(\/\/\)$/{
-		   s//\1/
-		   q
-		 }
-		 /^X\(\/\).*/{
-		   s//\1/
-		   q
-		 }
-		 s/.*/./; q'
-      `
-
-      test -d "$dstdir"
-      dstdir_status=$?
-    fi
-  fi
-
-  obsolete_mkdir_used=false
-
-  if test $dstdir_status != 0; then
-    case $posix_mkdir in
-      '')
-	# Create intermediate dirs using mode 755 as modified by the umask.
-	# This is like FreeBSD 'install' as of 1997-10-28.
-	umask=`umask`
-	case $stripcmd.$umask in
-	  # Optimize common cases.
-	  *[2367][2367]) mkdir_umask=$umask;;
-	  .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
-	  *[0-7])
-	    mkdir_umask=`expr $umask + 22 \
-	      - $umask % 100 % 40 + $umask % 20 \
-	      - $umask % 10 % 4 + $umask % 2
-	    `;;
-	  *) mkdir_umask=$umask,go-w;;
-	esac
-
-	# With -d, create the new directory with the user-specified mode.
-	# Otherwise, rely on $mkdir_umask.
-	if test -n "$dir_arg"; then
-	  mkdir_mode=-m$mode
-	else
-	  mkdir_mode=
-	fi
-
-	posix_mkdir=false
-	case $umask in
-	  *[123567][0-7][0-7])
-	    # POSIX mkdir -p sets u+wx bits regardless of umask, which
-	    # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
-	    ;;
-	  *)
-	    tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
-	    trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
-
-	    if (umask $mkdir_umask &&
-		exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
-	    then
-	      if test -z "$dir_arg" || {
-		   # Check for POSIX incompatibilities with -m.
-		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
-		   # other-writeable bit of parent directory when it shouldn't.
-		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
-		   ls_ld_tmpdir=`ls -ld "$tmpdir"`
-		   case $ls_ld_tmpdir in
-		     d????-?r-*) different_mode=700;;
-		     d????-?--*) different_mode=755;;
-		     *) false;;
-		   esac &&
-		   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
-		     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
-		     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
-		   }
-		 }
-	      then posix_mkdir=:
-	      fi
-	      rmdir "$tmpdir/d" "$tmpdir"
-	    else
-	      # Remove any dirs left behind by ancient mkdir implementations.
-	      rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
-	    fi
-	    trap '' 0;;
-	esac;;
-    esac
-
-    if
-      $posix_mkdir && (
-	umask $mkdir_umask &&
-	$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
-      )
-    then :
-    else
-
-      # The umask is ridiculous, or mkdir does not conform to POSIX,
-      # or it failed possibly due to a race condition.  Create the
-      # directory the slow way, step by step, checking for races as we go.
-
-      case $dstdir in
-	/*) prefix='/';;
-	-*) prefix='./';;
-	*)  prefix='';;
-      esac
-
-      eval "$initialize_posix_glob"
-
-      oIFS=$IFS
-      IFS=/
-      $posix_glob set -f
-      set fnord $dstdir
-      shift
-      $posix_glob set +f
-      IFS=$oIFS
-
-      prefixes=
-
-      for d
-      do
-	test -z "$d" && continue
-
-	prefix=$prefix$d
-	if test -d "$prefix"; then
-	  prefixes=
-	else
-	  if $posix_mkdir; then
-	    (umask=$mkdir_umask &&
-	     $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
-	    # Don't fail if two instances are running concurrently.
-	    test -d "$prefix" || exit 1
-	  else
-	    case $prefix in
-	      *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
-	      *) qprefix=$prefix;;
-	    esac
-	    prefixes="$prefixes '$qprefix'"
-	  fi
-	fi
-	prefix=$prefix/
-      done
-
-      if test -n "$prefixes"; then
-	# Don't fail if two instances are running concurrently.
-	(umask $mkdir_umask &&
-	 eval "\$doit_exec \$mkdirprog $prefixes") ||
-	  test -d "$dstdir" || exit 1
-	obsolete_mkdir_used=true
-      fi
-    fi
-  fi
-
-  if test -n "$dir_arg"; then
-    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
-    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
-    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
-      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
-  else
-
-    # Make a couple of temp file names in the proper directory.
-    dsttmp=$dstdir/_inst.$$_
-    rmtmp=$dstdir/_rm.$$_
-
-    # Trap to clean up those temp files at exit.
-    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
-
-    # Copy the file name to the temp name.
-    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
-
-    # and set any options; do chmod last to preserve setuid bits.
-    #
-    # If any of these fail, we abort the whole thing.  If we want to
-    # ignore errors from any of these, just make sure not to ignore
-    # errors from the above "$doit $cpprog $src $dsttmp" command.
-    #
-    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
-    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
-    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
-    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
-
-    # If -C, don't bother to copy if it wouldn't change the file.
-    if $copy_on_change &&
-       old=`LC_ALL=C ls -dlL "$dst"	2>/dev/null` &&
-       new=`LC_ALL=C ls -dlL "$dsttmp"	2>/dev/null` &&
-
-       eval "$initialize_posix_glob" &&
-       $posix_glob set -f &&
-       set X $old && old=:$2:$4:$5:$6 &&
-       set X $new && new=:$2:$4:$5:$6 &&
-       $posix_glob set +f &&
-
-       test "$old" = "$new" &&
-       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
-    then
-      rm -f "$dsttmp"
-    else
-      # Rename the file to the real destination.
-      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
-
-      # The rename failed, perhaps because mv can't rename something else
-      # to itself, or perhaps because mv is so ancient that it does not
-      # support -f.
-      {
-	# Now remove or move aside any old file at destination location.
-	# We try this two ways since rm can't unlink itself on some
-	# systems and the destination file might be busy for other
-	# reasons.  In this case, the final cleanup might fail but the new
-	# file should still install successfully.
-	{
-	  test ! -f "$dst" ||
-	  $doit $rmcmd -f "$dst" 2>/dev/null ||
-	  { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
-	    { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
-	  } ||
-	  { echo "$0: cannot unlink or rename $dst" >&2
-	    (exit 1); exit 1
-	  }
-	} &&
-
-	# Now rename the file to the real destination.
-	$doit $mvcmd "$dsttmp" "$dst"
-      }
-    fi || exit 1
-
-    trap '' 0
-  fi
-done
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:
diff --git a/yaml-0.1.3/config/ltmain.sh b/yaml-0.1.3/config/ltmain.sh
deleted file mode 100755
index b612e9a..0000000
--- a/yaml-0.1.3/config/ltmain.sh
+++ /dev/null
@@ -1,8412 +0,0 @@
-# Generated from ltmain.m4sh.
-
-# ltmain.sh (GNU libtool) 2.2.6
-# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
-# This is free software; see the source for copying conditions.  There is NO
-# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-# GNU Libtool is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html,
-# or obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-# Usage: $progname [OPTION]... [MODE-ARG]...
-#
-# Provide generalized library-building support services.
-#
-#     --config             show all configuration variables
-#     --debug              enable verbose shell tracing
-# -n, --dry-run            display commands without modifying any files
-#     --features           display basic configuration information and exit
-#     --mode=MODE          use operation mode MODE
-#     --preserve-dup-deps  don't remove duplicate dependency libraries
-#     --quiet, --silent    don't print informational messages
-#     --tag=TAG            use configuration variables from tag TAG
-# -v, --verbose            print informational messages (default)
-#     --version            print version information
-# -h, --help               print short or long help message
-#
-# MODE must be one of the following:
-#
-#       clean              remove files from the build directory
-#       compile            compile a source file into a libtool object
-#       execute            automatically set library path, then run a program
-#       finish             complete the installation of libtool libraries
-#       install            install libraries or executables
-#       link               create a library or an executable
-#       uninstall          remove libraries from an installed directory
-#
-# MODE-ARGS vary depending on the MODE.
-# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
-#
-# When reporting a bug, please describe a test case to reproduce it and
-# include the following information:
-#
-#       host-triplet:	$host
-#       shell:		$SHELL
-#       compiler:		$LTCC
-#       compiler flags:		$LTCFLAGS
-#       linker:		$LD (gnu? $with_gnu_ld)
-#       $progname:		(GNU libtool) 2.2.6 Debian-2.2.6a-1ubuntu1
-#       automake:		$automake_version
-#       autoconf:		$autoconf_version
-#
-# Report bugs to <bug-libtool@gnu.org>.
-
-PROGRAM=ltmain.sh
-PACKAGE=libtool
-VERSION="2.2.6 Debian-2.2.6a-1ubuntu1"
-TIMESTAMP=""
-package_revision=1.3012
-
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
-fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# NLS nuisances: We save the old values to restore during execute mode.
-# Only set LANG and LC_ALL to C if already set.
-# These must not be set unconditionally because not all systems understand
-# e.g. LANG=C (notably SCO).
-lt_user_locale=
-lt_safe_locale=
-for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
-do
-  eval "if test \"\${$lt_var+set}\" = set; then
-          save_$lt_var=\$$lt_var
-          $lt_var=C
-	  export $lt_var
-	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
-	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
-	fi"
-done
-
-$lt_unset CDPATH
-
-
-
-
-
-: ${CP="cp -f"}
-: ${ECHO="echo"}
-: ${EGREP="/bin/grep -E"}
-: ${FGREP="/bin/grep -F"}
-: ${GREP="/bin/grep"}
-: ${LN_S="ln -s"}
-: ${MAKE="make"}
-: ${MKDIR="mkdir"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-: ${SED="/bin/sed"}
-: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
-: ${Xsed="$SED -e 1s/^X//"}
-
-# Global variables:
-EXIT_SUCCESS=0
-EXIT_FAILURE=1
-EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
-EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
-
-exit_status=$EXIT_SUCCESS
-
-# Make sure IFS has a sensible default
-lt_nl='
-'
-IFS=" 	$lt_nl"
-
-dirname="s,/[^/]*$,,"
-basename="s,^.*/,,"
-
-# func_dirname_and_basename file append nondir_replacement
-# perform func_basename and func_dirname in a single function
-# call:
-#   dirname:  Compute the dirname of FILE.  If nonempty,
-#             add APPEND to the result, otherwise set result
-#             to NONDIR_REPLACEMENT.
-#             value returned in "$func_dirname_result"
-#   basename: Compute filename of FILE.
-#             value retuned in "$func_basename_result"
-# Implementation must be kept synchronized with func_dirname
-# and func_basename. For efficiency, we do not delegate to
-# those functions but instead duplicate the functionality here.
-func_dirname_and_basename ()
-{
-  # Extract subdirectory from the argument.
-  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
-  if test "X$func_dirname_result" = "X${1}"; then
-    func_dirname_result="${3}"
-  else
-    func_dirname_result="$func_dirname_result${2}"
-  fi
-  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
-}
-
-# Generated shell functions inserted here.
-
-# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
-# is ksh but when the shell is invoked as "sh" and the current value of
-# the _XPG environment variable is not equal to 1 (one), the special
-# positional parameter $0, within a function call, is the name of the
-# function.
-progpath="$0"
-
-# The name of this program:
-# In the unlikely event $progname began with a '-', it would play havoc with
-# func_echo (imagine progname=-n), so we prepend ./ in that case:
-func_dirname_and_basename "$progpath"
-progname=$func_basename_result
-case $progname in
-  -*) progname=./$progname ;;
-esac
-
-# Make sure we have an absolute path for reexecution:
-case $progpath in
-  [\\/]*|[A-Za-z]:\\*) ;;
-  *[\\/]*)
-     progdir=$func_dirname_result
-     progdir=`cd "$progdir" && pwd`
-     progpath="$progdir/$progname"
-     ;;
-  *)
-     save_IFS="$IFS"
-     IFS=:
-     for progdir in $PATH; do
-       IFS="$save_IFS"
-       test -x "$progdir/$progname" && break
-     done
-     IFS="$save_IFS"
-     test -n "$progdir" || progdir=`pwd`
-     progpath="$progdir/$progname"
-     ;;
-esac
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed="${SED}"' -e 1s/^X//'
-sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Re-`\' parameter expansions in output of double_quote_subst that were
-# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
-# in input to double_quote_subst, that '$' was protected from expansion.
-# Since each input `\' is now two `\'s, look for any number of runs of
-# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
-bs='\\'
-bs2='\\\\'
-bs4='\\\\\\\\'
-dollar='\$'
-sed_double_backslash="\
-  s/$bs4/&\\
-/g
-  s/^$bs2$dollar/$bs&/
-  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
-  s/\n//g"
-
-# Standard options:
-opt_dry_run=false
-opt_help=false
-opt_quiet=false
-opt_verbose=false
-opt_warning=:
-
-# func_echo arg...
-# Echo program name prefixed message, along with the current mode
-# name if it has been set yet.
-func_echo ()
-{
-    $ECHO "$progname${mode+: }$mode: $*"
-}
-
-# func_verbose arg...
-# Echo program name prefixed message in verbose mode only.
-func_verbose ()
-{
-    $opt_verbose && func_echo ${1+"$@"}
-
-    # A bug in bash halts the script if the last line of a function
-    # fails when set -e is in force, so we need another command to
-    # work around that:
-    :
-}
-
-# func_error arg...
-# Echo program name prefixed message to standard error.
-func_error ()
-{
-    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
-}
-
-# func_warning arg...
-# Echo program name prefixed warning message to standard error.
-func_warning ()
-{
-    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
-
-    # bash bug again:
-    :
-}
-
-# func_fatal_error arg...
-# Echo program name prefixed message to standard error, and exit.
-func_fatal_error ()
-{
-    func_error ${1+"$@"}
-    exit $EXIT_FAILURE
-}
-
-# func_fatal_help arg...
-# Echo program name prefixed message to standard error, followed by
-# a help hint, and exit.
-func_fatal_help ()
-{
-    func_error ${1+"$@"}
-    func_fatal_error "$help"
-}
-help="Try \`$progname --help' for more information."  ## default
-
-
-# func_grep expression filename
-# Check whether EXPRESSION matches any line of FILENAME, without output.
-func_grep ()
-{
-    $GREP "$1" "$2" >/dev/null 2>&1
-}
-
-
-# func_mkdir_p directory-path
-# Make sure the entire path to DIRECTORY-PATH is available.
-func_mkdir_p ()
-{
-    my_directory_path="$1"
-    my_dir_list=
-
-    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
-
-      # Protect directory names starting with `-'
-      case $my_directory_path in
-        -*) my_directory_path="./$my_directory_path" ;;
-      esac
-
-      # While some portion of DIR does not yet exist...
-      while test ! -d "$my_directory_path"; do
-        # ...make a list in topmost first order.  Use a colon delimited
-	# list incase some portion of path contains whitespace.
-        my_dir_list="$my_directory_path:$my_dir_list"
-
-        # If the last portion added has no slash in it, the list is done
-        case $my_directory_path in */*) ;; *) break ;; esac
-
-        # ...otherwise throw away the child directory and loop
-        my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
-      done
-      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
-
-      save_mkdir_p_IFS="$IFS"; IFS=':'
-      for my_dir in $my_dir_list; do
-	IFS="$save_mkdir_p_IFS"
-        # mkdir can fail with a `File exist' error if two processes
-        # try to create one of the directories concurrently.  Don't
-        # stop in that case!
-        $MKDIR "$my_dir" 2>/dev/null || :
-      done
-      IFS="$save_mkdir_p_IFS"
-
-      # Bail out if we (or some other process) failed to create a directory.
-      test -d "$my_directory_path" || \
-        func_fatal_error "Failed to create \`$1'"
-    fi
-}
-
-
-# func_mktempdir [string]
-# Make a temporary directory that won't clash with other running
-# libtool processes, and avoids race conditions if possible.  If
-# given, STRING is the basename for that directory.
-func_mktempdir ()
-{
-    my_template="${TMPDIR-/tmp}/${1-$progname}"
-
-    if test "$opt_dry_run" = ":"; then
-      # Return a directory name, but don't create it in dry-run mode
-      my_tmpdir="${my_template}-$$"
-    else
-
-      # If mktemp works, use that first and foremost
-      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
-
-      if test ! -d "$my_tmpdir"; then
-        # Failing that, at least try and use $RANDOM to avoid a race
-        my_tmpdir="${my_template}-${RANDOM-0}$$"
-
-        save_mktempdir_umask=`umask`
-        umask 0077
-        $MKDIR "$my_tmpdir"
-        umask $save_mktempdir_umask
-      fi
-
-      # If we're not in dry-run mode, bomb out on failure
-      test -d "$my_tmpdir" || \
-        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
-    fi
-
-    $ECHO "X$my_tmpdir" | $Xsed
-}
-
-
-# func_quote_for_eval arg
-# Aesthetically quote ARG to be evaled later.
-# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
-# is double-quoted, suitable for a subsequent eval, whereas
-# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
-# which are still active within double quotes backslashified.
-func_quote_for_eval ()
-{
-    case $1 in
-      *[\\\`\"\$]*)
-	func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
-      *)
-        func_quote_for_eval_unquoted_result="$1" ;;
-    esac
-
-    case $func_quote_for_eval_unquoted_result in
-      # Double-quote args containing shell metacharacters to delay
-      # word splitting, command substitution and and variable
-      # expansion for a subsequent eval.
-      # Many Bourne shells cannot handle close brackets correctly
-      # in scan sets, so we specify it separately.
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
-        ;;
-      *)
-        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
-    esac
-}
-
-
-# func_quote_for_expand arg
-# Aesthetically quote ARG to be evaled later; same as above,
-# but do not quote variable references.
-func_quote_for_expand ()
-{
-    case $1 in
-      *[\\\`\"]*)
-	my_arg=`$ECHO "X$1" | $Xsed \
-	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
-      *)
-        my_arg="$1" ;;
-    esac
-
-    case $my_arg in
-      # Double-quote args containing shell metacharacters to delay
-      # word splitting and command substitution for a subsequent eval.
-      # Many Bourne shells cannot handle close brackets correctly
-      # in scan sets, so we specify it separately.
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-        my_arg="\"$my_arg\""
-        ;;
-    esac
-
-    func_quote_for_expand_result="$my_arg"
-}
-
-
-# func_show_eval cmd [fail_exp]
-# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
-# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
-# is given, then evaluate it.
-func_show_eval ()
-{
-    my_cmd="$1"
-    my_fail_exp="${2-:}"
-
-    ${opt_silent-false} || {
-      func_quote_for_expand "$my_cmd"
-      eval "func_echo $func_quote_for_expand_result"
-    }
-
-    if ${opt_dry_run-false}; then :; else
-      eval "$my_cmd"
-      my_status=$?
-      if test "$my_status" -eq 0; then :; else
-	eval "(exit $my_status); $my_fail_exp"
-      fi
-    fi
-}
-
-
-# func_show_eval_locale cmd [fail_exp]
-# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
-# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
-# is given, then evaluate it.  Use the saved locale for evaluation.
-func_show_eval_locale ()
-{
-    my_cmd="$1"
-    my_fail_exp="${2-:}"
-
-    ${opt_silent-false} || {
-      func_quote_for_expand "$my_cmd"
-      eval "func_echo $func_quote_for_expand_result"
-    }
-
-    if ${opt_dry_run-false}; then :; else
-      eval "$lt_user_locale
-	    $my_cmd"
-      my_status=$?
-      eval "$lt_safe_locale"
-      if test "$my_status" -eq 0; then :; else
-	eval "(exit $my_status); $my_fail_exp"
-      fi
-    fi
-}
-
-
-
-
-
-# func_version
-# Echo version message to standard output and exit.
-func_version ()
-{
-    $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
-        s/^# //
-	s/^# *$//
-        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
-        p
-     }' < "$progpath"
-     exit $?
-}
-
-# func_usage
-# Echo short help message to standard output and exit.
-func_usage ()
-{
-    $SED -n '/^# Usage:/,/# -h/ {
-        s/^# //
-	s/^# *$//
-	s/\$progname/'$progname'/
-	p
-    }' < "$progpath"
-    $ECHO
-    $ECHO "run \`$progname --help | more' for full usage"
-    exit $?
-}
-
-# func_help
-# Echo long help message to standard output and exit.
-func_help ()
-{
-    $SED -n '/^# Usage:/,/# Report bugs to/ {
-        s/^# //
-	s/^# *$//
-	s*\$progname*'$progname'*
-	s*\$host*'"$host"'*
-	s*\$SHELL*'"$SHELL"'*
-	s*\$LTCC*'"$LTCC"'*
-	s*\$LTCFLAGS*'"$LTCFLAGS"'*
-	s*\$LD*'"$LD"'*
-	s/\$with_gnu_ld/'"$with_gnu_ld"'/
-	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
-	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
-	p
-     }' < "$progpath"
-    exit $?
-}
-
-# func_missing_arg argname
-# Echo program name prefixed message to standard error and set global
-# exit_cmd.
-func_missing_arg ()
-{
-    func_error "missing argument for $1"
-    exit_cmd=exit
-}
-
-exit_cmd=:
-
-
-
-
-
-# Check that we have a working $ECHO.
-if test "X$1" = X--no-reexec; then
-  # Discard the --no-reexec flag, and continue.
-  shift
-elif test "X$1" = X--fallback-echo; then
-  # Avoid inline document here, it may be left over
-  :
-elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
-  # Yippee, $ECHO works!
-  :
-else
-  # Restart under the correct shell, and then maybe $ECHO will work.
-  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
-fi
-
-if test "X$1" = X--fallback-echo; then
-  # used as fallback echo
-  shift
-  cat <<EOF
-$*
-EOF
-  exit $EXIT_SUCCESS
-fi
-
-magic="%%%MAGIC variable%%%"
-magic_exe="%%%MAGIC EXE variable%%%"
-
-# Global variables.
-# $mode is unset
-nonopt=
-execute_dlfiles=
-preserve_args=
-lo2o="s/\\.lo\$/.${objext}/"
-o2lo="s/\\.${objext}\$/.lo/"
-extracted_archives=
-extracted_serial=0
-
-opt_dry_run=false
-opt_duplicate_deps=false
-opt_silent=false
-opt_debug=:
-
-# If this variable is set in any of the actions, the command in it
-# will be execed at the end.  This prevents here-documents from being
-# left over by shells.
-exec_cmd=
-
-# func_fatal_configuration arg...
-# Echo program name prefixed message to standard error, followed by
-# a configuration failure hint, and exit.
-func_fatal_configuration ()
-{
-    func_error ${1+"$@"}
-    func_error "See the $PACKAGE documentation for more information."
-    func_fatal_error "Fatal configuration error."
-}
-
-
-# func_config
-# Display the configuration for all the tags in this script.
-func_config ()
-{
-    re_begincf='^# ### BEGIN LIBTOOL'
-    re_endcf='^# ### END LIBTOOL'
-
-    # Default configuration.
-    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
-
-    # Now print the configurations for the tags.
-    for tagname in $taglist; do
-      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
-    done
-
-    exit $?
-}
-
-# func_features
-# Display the features supported by this script.
-func_features ()
-{
-    $ECHO "host: $host"
-    if test "$build_libtool_libs" = yes; then
-      $ECHO "enable shared libraries"
-    else
-      $ECHO "disable shared libraries"
-    fi
-    if test "$build_old_libs" = yes; then
-      $ECHO "enable static libraries"
-    else
-      $ECHO "disable static libraries"
-    fi
-
-    exit $?
-}
-
-# func_enable_tag tagname
-# Verify that TAGNAME is valid, and either flag an error and exit, or
-# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
-# variable here.
-func_enable_tag ()
-{
-  # Global variable:
-  tagname="$1"
-
-  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
-  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
-  sed_extractcf="/$re_begincf/,/$re_endcf/p"
-
-  # Validate tagname.
-  case $tagname in
-    *[!-_A-Za-z0-9,/]*)
-      func_fatal_error "invalid tag name: $tagname"
-      ;;
-  esac
-
-  # Don't test for the "default" C tag, as we know it's
-  # there but not specially marked.
-  case $tagname in
-    CC) ;;
-    *)
-      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
-	taglist="$taglist $tagname"
-
-	# Evaluate the configuration.  Be careful to quote the path
-	# and the sed script, to avoid splitting on whitespace, but
-	# also don't use non-portable quotes within backquotes within
-	# quotes we have to do it in 2 steps:
-	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
-	eval "$extractedcf"
-      else
-	func_error "ignoring unknown tag $tagname"
-      fi
-      ;;
-  esac
-}
-
-# Parse options once, thoroughly.  This comes as soon as possible in
-# the script to make things like `libtool --version' happen quickly.
-{
-
-  # Shorthand for --mode=foo, only valid as the first argument
-  case $1 in
-  clean|clea|cle|cl)
-    shift; set dummy --mode clean ${1+"$@"}; shift
-    ;;
-  compile|compil|compi|comp|com|co|c)
-    shift; set dummy --mode compile ${1+"$@"}; shift
-    ;;
-  execute|execut|execu|exec|exe|ex|e)
-    shift; set dummy --mode execute ${1+"$@"}; shift
-    ;;
-  finish|finis|fini|fin|fi|f)
-    shift; set dummy --mode finish ${1+"$@"}; shift
-    ;;
-  install|instal|insta|inst|ins|in|i)
-    shift; set dummy --mode install ${1+"$@"}; shift
-    ;;
-  link|lin|li|l)
-    shift; set dummy --mode link ${1+"$@"}; shift
-    ;;
-  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
-    shift; set dummy --mode uninstall ${1+"$@"}; shift
-    ;;
-  esac
-
-  # Parse non-mode specific arguments:
-  while test "$#" -gt 0; do
-    opt="$1"
-    shift
-
-    case $opt in
-      --config)		func_config					;;
-
-      --debug)		preserve_args="$preserve_args $opt"
-			func_echo "enabling shell trace mode"
-			opt_debug='set -x'
-			$opt_debug
-			;;
-
-      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
-			execute_dlfiles="$execute_dlfiles $1"
-			shift
-			;;
-
-      --dry-run | -n)	opt_dry_run=:					;;
-      --features)       func_features					;;
-      --finish)		mode="finish"					;;
-
-      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
-			case $1 in
-			  # Valid mode arguments:
-			  clean)	;;
-			  compile)	;;
-			  execute)	;;
-			  finish)	;;
-			  install)	;;
-			  link)		;;
-			  relink)	;;
-			  uninstall)	;;
-
-			  # Catch anything else as an error
-			  *) func_error "invalid argument for $opt"
-			     exit_cmd=exit
-			     break
-			     ;;
-		        esac
-
-			mode="$1"
-			shift
-			;;
-
-      --preserve-dup-deps)
-			opt_duplicate_deps=:				;;
-
-      --quiet|--silent)	preserve_args="$preserve_args $opt"
-			opt_silent=:
-			;;
-
-      --verbose| -v)	preserve_args="$preserve_args $opt"
-			opt_silent=false
-			;;
-
-      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
-			preserve_args="$preserve_args $opt $1"
-			func_enable_tag "$1"	# tagname is set here
-			shift
-			;;
-
-      # Separate optargs to long options:
-      -dlopen=*|--mode=*|--tag=*)
-			func_opt_split "$opt"
-			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
-			shift
-			;;
-
-      -\?|-h)		func_usage					;;
-      --help)		opt_help=:					;;
-      --version)	func_version					;;
-
-      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
-
-      *)		nonopt="$opt"
-			break
-			;;
-    esac
-  done
-
-
-  case $host in
-    *cygwin* | *mingw* | *pw32* | *cegcc*)
-      # don't eliminate duplications in $postdeps and $predeps
-      opt_duplicate_compiler_generated_deps=:
-      ;;
-    *)
-      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
-      ;;
-  esac
-
-  # Having warned about all mis-specified options, bail out if
-  # anything was wrong.
-  $exit_cmd $EXIT_FAILURE
-}
-
-# func_check_version_match
-# Ensure that we are using m4 macros, and libtool script from the same
-# release of libtool.
-func_check_version_match ()
-{
-  if test "$package_revision" != "$macro_revision"; then
-    if test "$VERSION" != "$macro_version"; then
-      if test -z "$macro_version"; then
-        cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
-$progname: definition of this LT_INIT comes from an older release.
-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-$progname: and run autoconf again.
-_LT_EOF
-      else
-        cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
-$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-$progname: and run autoconf again.
-_LT_EOF
-      fi
-    else
-      cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
-$progname: but the definition of this LT_INIT comes from revision $macro_revision.
-$progname: You should recreate aclocal.m4 with macros from revision $package_revision
-$progname: of $PACKAGE $VERSION and run autoconf again.
-_LT_EOF
-    fi
-
-    exit $EXIT_MISMATCH
-  fi
-}
-
-
-## ----------- ##
-##    Main.    ##
-## ----------- ##
-
-$opt_help || {
-  # Sanity checks first:
-  func_check_version_match
-
-  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
-    func_fatal_configuration "not configured to build any kind of library"
-  fi
-
-  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
-
-
-  # Darwin sucks
-  eval std_shrext=\"$shrext_cmds\"
-
-
-  # Only execute mode is allowed to have -dlopen flags.
-  if test -n "$execute_dlfiles" && test "$mode" != execute; then
-    func_error "unrecognized option \`-dlopen'"
-    $ECHO "$help" 1>&2
-    exit $EXIT_FAILURE
-  fi
-
-  # Change the help message to a mode-specific one.
-  generic_help="$help"
-  help="Try \`$progname --help --mode=$mode' for more information."
-}
-
-
-# func_lalib_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_lalib_p ()
-{
-    test -f "$1" &&
-      $SED -e 4q "$1" 2>/dev/null \
-        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
-}
-
-# func_lalib_unsafe_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
-# This function implements the same check as func_lalib_p without
-# resorting to external programs.  To this end, it redirects stdin and
-# closes it afterwards, without saving the original file descriptor.
-# As a safety measure, use it only where a negative result would be
-# fatal anyway.  Works if `file' does not exist.
-func_lalib_unsafe_p ()
-{
-    lalib_p=no
-    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
-	for lalib_p_l in 1 2 3 4
-	do
-	    read lalib_p_line
-	    case "$lalib_p_line" in
-		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
-	    esac
-	done
-	exec 0<&5 5<&-
-    fi
-    test "$lalib_p" = yes
-}
-
-# func_ltwrapper_script_p file
-# True iff FILE is a libtool wrapper script
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_script_p ()
-{
-    func_lalib_p "$1"
-}
-
-# func_ltwrapper_executable_p file
-# True iff FILE is a libtool wrapper executable
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_executable_p ()
-{
-    func_ltwrapper_exec_suffix=
-    case $1 in
-    *.exe) ;;
-    *) func_ltwrapper_exec_suffix=.exe ;;
-    esac
-    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
-}
-
-# func_ltwrapper_scriptname file
-# Assumes file is an ltwrapper_executable
-# uses $file to determine the appropriate filename for a
-# temporary ltwrapper_script.
-func_ltwrapper_scriptname ()
-{
-    func_ltwrapper_scriptname_result=""
-    if func_ltwrapper_executable_p "$1"; then
-	func_dirname_and_basename "$1" "" "."
-	func_stripname '' '.exe' "$func_basename_result"
-	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
-    fi
-}
-
-# func_ltwrapper_p file
-# True iff FILE is a libtool wrapper script or wrapper executable
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_p ()
-{
-    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
-}
-
-
-# func_execute_cmds commands fail_cmd
-# Execute tilde-delimited COMMANDS.
-# If FAIL_CMD is given, eval that upon failure.
-# FAIL_CMD may read-access the current command in variable CMD!
-func_execute_cmds ()
-{
-    $opt_debug
-    save_ifs=$IFS; IFS='~'
-    for cmd in $1; do
-      IFS=$save_ifs
-      eval cmd=\"$cmd\"
-      func_show_eval "$cmd" "${2-:}"
-    done
-    IFS=$save_ifs
-}
-
-
-# func_source file
-# Source FILE, adding directory component if necessary.
-# Note that it is not necessary on cygwin/mingw to append a dot to
-# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
-# behavior happens only for exec(3), not for open(2)!  Also, sourcing
-# `FILE.' does not work on cygwin managed mounts.
-func_source ()
-{
-    $opt_debug
-    case $1 in
-    */* | *\\*)	. "$1" ;;
-    *)		. "./$1" ;;
-    esac
-}
-
-
-# func_infer_tag arg
-# Infer tagged configuration to use if any are available and
-# if one wasn't chosen via the "--tag" command line option.
-# Only attempt this if the compiler in the base compile
-# command doesn't match the default compiler.
-# arg is usually of the form 'gcc ...'
-func_infer_tag ()
-{
-    $opt_debug
-    if test -n "$available_tags" && test -z "$tagname"; then
-      CC_quoted=
-      for arg in $CC; do
-        func_quote_for_eval "$arg"
-	CC_quoted="$CC_quoted $func_quote_for_eval_result"
-      done
-      case $@ in
-      # Blanks in the command may have been stripped by the calling shell,
-      # but not from the CC environment variable when configure was run.
-      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
-      # Blanks at the start of $base_compile will cause this to fail
-      # if we don't check for them as well.
-      *)
-	for z in $available_tags; do
-	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
-	    # Evaluate the configuration.
-	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
-	    CC_quoted=
-	    for arg in $CC; do
-	      # Double-quote args containing other shell metacharacters.
-	      func_quote_for_eval "$arg"
-	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
-	    done
-	    case "$@ " in
-	      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
-	      # The compiler in the base compile command matches
-	      # the one in the tagged configuration.
-	      # Assume this is the tagged configuration we want.
-	      tagname=$z
-	      break
-	      ;;
-	    esac
-	  fi
-	done
-	# If $tagname still isn't set, then no tagged configuration
-	# was found and let the user know that the "--tag" command
-	# line option must be used.
-	if test -z "$tagname"; then
-	  func_echo "unable to infer tagged configuration"
-	  func_fatal_error "specify a tag with \`--tag'"
-#	else
-#	  func_verbose "using $tagname tagged configuration"
-	fi
-	;;
-      esac
-    fi
-}
-
-
-
-# func_write_libtool_object output_name pic_name nonpic_name
-# Create a libtool object file (analogous to a ".la" file),
-# but don't create it if we're doing a dry run.
-func_write_libtool_object ()
-{
-    write_libobj=${1}
-    if test "$build_libtool_libs" = yes; then
-      write_lobj=\'${2}\'
-    else
-      write_lobj=none
-    fi
-
-    if test "$build_old_libs" = yes; then
-      write_oldobj=\'${3}\'
-    else
-      write_oldobj=none
-    fi
-
-    $opt_dry_run || {
-      cat >${write_libobj}T <<EOF
-# $write_libobj - a libtool object file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object=$write_lobj
-
-# Name of the non-PIC object
-non_pic_object=$write_oldobj
-
-EOF
-      $MV "${write_libobj}T" "${write_libobj}"
-    }
-}
-
-# func_mode_compile arg...
-func_mode_compile ()
-{
-    $opt_debug
-    # Get the compilation command and the source file.
-    base_compile=
-    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
-    suppress_opt=yes
-    suppress_output=
-    arg_mode=normal
-    libobj=
-    later=
-    pie_flag=
-
-    for arg
-    do
-      case $arg_mode in
-      arg  )
-	# do not "continue".  Instead, add this to base_compile
-	lastarg="$arg"
-	arg_mode=normal
-	;;
-
-      target )
-	libobj="$arg"
-	arg_mode=normal
-	continue
-	;;
-
-      normal )
-	# Accept any command-line options.
-	case $arg in
-	-o)
-	  test -n "$libobj" && \
-	    func_fatal_error "you cannot specify \`-o' more than once"
-	  arg_mode=target
-	  continue
-	  ;;
-
-	-pie | -fpie | -fPIE)
-          pie_flag="$pie_flag $arg"
-	  continue
-	  ;;
-
-	-shared | -static | -prefer-pic | -prefer-non-pic)
-	  later="$later $arg"
-	  continue
-	  ;;
-
-	-no-suppress)
-	  suppress_opt=no
-	  continue
-	  ;;
-
-	-Xcompiler)
-	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
-	  continue      #  The current "srcfile" will either be retained or
-	  ;;            #  replaced later.  I would guess that would be a bug.
-
-	-Wc,*)
-	  func_stripname '-Wc,' '' "$arg"
-	  args=$func_stripname_result
-	  lastarg=
-	  save_ifs="$IFS"; IFS=','
-	  for arg in $args; do
-	    IFS="$save_ifs"
-	    func_quote_for_eval "$arg"
-	    lastarg="$lastarg $func_quote_for_eval_result"
-	  done
-	  IFS="$save_ifs"
-	  func_stripname ' ' '' "$lastarg"
-	  lastarg=$func_stripname_result
-
-	  # Add the arguments to base_compile.
-	  base_compile="$base_compile $lastarg"
-	  continue
-	  ;;
-
-	*)
-	  # Accept the current argument as the source file.
-	  # The previous "srcfile" becomes the current argument.
-	  #
-	  lastarg="$srcfile"
-	  srcfile="$arg"
-	  ;;
-	esac  #  case $arg
-	;;
-      esac    #  case $arg_mode
-
-      # Aesthetically quote the previous argument.
-      func_quote_for_eval "$lastarg"
-      base_compile="$base_compile $func_quote_for_eval_result"
-    done # for arg
-
-    case $arg_mode in
-    arg)
-      func_fatal_error "you must specify an argument for -Xcompile"
-      ;;
-    target)
-      func_fatal_error "you must specify a target with \`-o'"
-      ;;
-    *)
-      # Get the name of the library object.
-      test -z "$libobj" && {
-	func_basename "$srcfile"
-	libobj="$func_basename_result"
-      }
-      ;;
-    esac
-
-    # Recognize several different file suffixes.
-    # If the user specifies -o file.o, it is replaced with file.lo
-    case $libobj in
-    *.[cCFSifmso] | \
-    *.ada | *.adb | *.ads | *.asm | \
-    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
-    *.[fF][09]? | *.for | *.java | *.obj | *.sx)
-      func_xform "$libobj"
-      libobj=$func_xform_result
-      ;;
-    esac
-
-    case $libobj in
-    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
-    *)
-      func_fatal_error "cannot determine name of library object from \`$libobj'"
-      ;;
-    esac
-
-    func_infer_tag $base_compile
-
-    for arg in $later; do
-      case $arg in
-      -shared)
-	test "$build_libtool_libs" != yes && \
-	  func_fatal_configuration "can not build a shared library"
-	build_old_libs=no
-	continue
-	;;
-
-      -static)
-	build_libtool_libs=no
-	build_old_libs=yes
-	continue
-	;;
-
-      -prefer-pic)
-	pic_mode=yes
-	continue
-	;;
-
-      -prefer-non-pic)
-	pic_mode=no
-	continue
-	;;
-      esac
-    done
-
-    func_quote_for_eval "$libobj"
-    test "X$libobj" != "X$func_quote_for_eval_result" \
-      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
-      && func_warning "libobj name \`$libobj' may not contain shell special characters."
-    func_dirname_and_basename "$obj" "/" ""
-    objname="$func_basename_result"
-    xdir="$func_dirname_result"
-    lobj=${xdir}$objdir/$objname
-
-    test -z "$base_compile" && \
-      func_fatal_help "you must specify a compilation command"
-
-    # Delete any leftover library objects.
-    if test "$build_old_libs" = yes; then
-      removelist="$obj $lobj $libobj ${libobj}T"
-    else
-      removelist="$lobj $libobj ${libobj}T"
-    fi
-
-    # On Cygwin there's no "real" PIC flag so we must build both object types
-    case $host_os in
-    cygwin* | mingw* | pw32* | os2* | cegcc*)
-      pic_mode=default
-      ;;
-    esac
-    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
-      # non-PIC code in shared libraries is not supported
-      pic_mode=default
-    fi
-
-    # Calculate the filename of the output object if compiler does
-    # not support -o with -c
-    if test "$compiler_c_o" = no; then
-      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
-      lockfile="$output_obj.lock"
-    else
-      output_obj=
-      need_locks=no
-      lockfile=
-    fi
-
-    # Lock this critical section if it is needed
-    # We use this script file to make the link, it avoids creating a new file
-    if test "$need_locks" = yes; then
-      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
-	func_echo "Waiting for $lockfile to be removed"
-	sleep 2
-      done
-    elif test "$need_locks" = warn; then
-      if test -f "$lockfile"; then
-	$ECHO "\
-*** ERROR, $lockfile exists and contains:
-`cat $lockfile 2>/dev/null`
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
-	$opt_dry_run || $RM $removelist
-	exit $EXIT_FAILURE
-      fi
-      removelist="$removelist $output_obj"
-      $ECHO "$srcfile" > "$lockfile"
-    fi
-
-    $opt_dry_run || $RM $removelist
-    removelist="$removelist $lockfile"
-    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
-
-    if test -n "$fix_srcfile_path"; then
-      eval srcfile=\"$fix_srcfile_path\"
-    fi
-    func_quote_for_eval "$srcfile"
-    qsrcfile=$func_quote_for_eval_result
-
-    # Only build a PIC object if we are building libtool libraries.
-    if test "$build_libtool_libs" = yes; then
-      # Without this assignment, base_compile gets emptied.
-      fbsd_hideous_sh_bug=$base_compile
-
-      if test "$pic_mode" != no; then
-	command="$base_compile $qsrcfile $pic_flag"
-      else
-	# Don't build PIC code
-	command="$base_compile $qsrcfile"
-      fi
-
-      func_mkdir_p "$xdir$objdir"
-
-      if test -z "$output_obj"; then
-	# Place PIC objects in $objdir
-	command="$command -o $lobj"
-      fi
-
-      func_show_eval_locale "$command"	\
-          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
-
-      if test "$need_locks" = warn &&
-	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
-	$ECHO "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
-
-but it should contain:
-$srcfile
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
-	$opt_dry_run || $RM $removelist
-	exit $EXIT_FAILURE
-      fi
-
-      # Just move the object if needed, then go on to compile the next one
-      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
-	func_show_eval '$MV "$output_obj" "$lobj"' \
-	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
-      fi
-
-      # Allow error messages only from the first compilation.
-      if test "$suppress_opt" = yes; then
-	suppress_output=' >/dev/null 2>&1'
-      fi
-    fi
-
-    # Only build a position-dependent object if we build old libraries.
-    if test "$build_old_libs" = yes; then
-      if test "$pic_mode" != yes; then
-	# Don't build PIC code
-	command="$base_compile $qsrcfile$pie_flag"
-      else
-	command="$base_compile $qsrcfile $pic_flag"
-      fi
-      if test "$compiler_c_o" = yes; then
-	command="$command -o $obj"
-      fi
-
-      # Suppress compiler output if we already did a PIC compilation.
-      command="$command$suppress_output"
-      func_show_eval_locale "$command" \
-        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
-
-      if test "$need_locks" = warn &&
-	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
-	$ECHO "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
-
-but it should contain:
-$srcfile
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
-	$opt_dry_run || $RM $removelist
-	exit $EXIT_FAILURE
-      fi
-
-      # Just move the object if needed
-      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
-	func_show_eval '$MV "$output_obj" "$obj"' \
-	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
-      fi
-    fi
-
-    $opt_dry_run || {
-      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
-
-      # Unlock the critical section if it was locked
-      if test "$need_locks" != no; then
-	removelist=$lockfile
-        $RM "$lockfile"
-      fi
-    }
-
-    exit $EXIT_SUCCESS
-}
-
-$opt_help || {
-test "$mode" = compile && func_mode_compile ${1+"$@"}
-}
-
-func_mode_help ()
-{
-    # We need to display help for each of the modes.
-    case $mode in
-      "")
-        # Generic help is extracted from the usage comments
-        # at the start of this file.
-        func_help
-        ;;
-
-      clean)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
-
-Remove files from the build directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
-to RM.
-
-If FILE is a libtool library, object or program, all the files associated
-with it are deleted. Otherwise, only FILE itself is deleted using RM."
-        ;;
-
-      compile)
-      $ECHO \
-"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
-
-Compile a source file into a libtool library object.
-
-This mode accepts the following additional options:
-
-  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
-  -no-suppress      do not suppress compiler output for multiple passes
-  -prefer-pic       try to building PIC objects only
-  -prefer-non-pic   try to building non-PIC objects only
-  -shared           do not build a \`.o' file suitable for static linking
-  -static           only build a \`.o' file suitable for static linking
-
-COMPILE-COMMAND is a command to be used in creating a \`standard' object file
-from the given SOURCEFILE.
-
-The output file name is determined by removing the directory component from
-SOURCEFILE, then substituting the C source code suffix \`.c' with the
-library object suffix, \`.lo'."
-        ;;
-
-      execute)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
-
-Automatically set library path, then run a program.
-
-This mode accepts the following additional options:
-
-  -dlopen FILE      add the directory containing FILE to the library path
-
-This mode sets the library path environment variable according to \`-dlopen'
-flags.
-
-If any of the ARGS are libtool executable wrappers, then they are translated
-into their corresponding uninstalled binary, and any of their required library
-directories are added to the library path.
-
-Then, COMMAND is executed, with ARGS as arguments."
-        ;;
-
-      finish)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
-
-Complete the installation of libtool libraries.
-
-Each LIBDIR is a directory that contains libtool libraries.
-
-The commands that this mode executes may require superuser privileges.  Use
-the \`--dry-run' option if you just want to see what would be executed."
-        ;;
-
-      install)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
-
-Install executables or libraries.
-
-INSTALL-COMMAND is the installation command.  The first component should be
-either the \`install' or \`cp' program.
-
-The following components of INSTALL-COMMAND are treated specially:
-
-  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
-
-The rest of the components are interpreted as arguments to that command (only
-BSD-compatible install options are recognized)."
-        ;;
-
-      link)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
-
-Link object files or libraries together to form another library, or to
-create an executable program.
-
-LINK-COMMAND is a command using the C compiler that you would use to create
-a program from several object files.
-
-The following components of LINK-COMMAND are treated specially:
-
-  -all-static       do not do any dynamic linking at all
-  -avoid-version    do not add a version suffix if possible
-  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
-  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
-  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
-  -export-symbols SYMFILE
-                    try to export only the symbols listed in SYMFILE
-  -export-symbols-regex REGEX
-                    try to export only the symbols matching REGEX
-  -LLIBDIR          search LIBDIR for required installed libraries
-  -lNAME            OUTPUT-FILE requires the installed library libNAME
-  -module           build a library that can dlopened
-  -no-fast-install  disable the fast-install mode
-  -no-install       link a not-installable executable
-  -no-undefined     declare that a library does not refer to external symbols
-  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
-  -objectlist FILE  Use a list of object files found in FILE to specify objects
-  -precious-files-regex REGEX
-                    don't remove output files matching REGEX
-  -release RELEASE  specify package release information
-  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
-  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
-  -shared           only do dynamic linking of libtool libraries
-  -shrext SUFFIX    override the standard shared library file extension
-  -static           do not do any dynamic linking of uninstalled libtool libraries
-  -static-libtool-libs
-                    do not do any dynamic linking of libtool libraries
-  -version-info CURRENT[:REVISION[:AGE]]
-                    specify library version info [each variable defaults to 0]
-  -weak LIBNAME     declare that the target provides the LIBNAME interface
-
-All other options (arguments beginning with \`-') are ignored.
-
-Every other argument is treated as a filename.  Files ending in \`.la' are
-treated as uninstalled libtool libraries, other files are standard or library
-object files.
-
-If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
-only library objects (\`.lo' files) may be specified, and \`-rpath' is
-required, except when creating a convenience library.
-
-If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
-using \`ar' and \`ranlib', or on Windows using \`lib'.
-
-If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
-is created, otherwise an executable program is created."
-        ;;
-
-      uninstall)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
-
-Remove libraries from an installation directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
-to RM.
-
-If FILE is a libtool library, all the files associated with it are deleted.
-Otherwise, only FILE itself is deleted using RM."
-        ;;
-
-      *)
-        func_fatal_help "invalid operation mode \`$mode'"
-        ;;
-    esac
-
-    $ECHO
-    $ECHO "Try \`$progname --help' for more information about other modes."
-
-    exit $?
-}
-
-  # Now that we've collected a possible --mode arg, show help if necessary
-  $opt_help && func_mode_help
-
-
-# func_mode_execute arg...
-func_mode_execute ()
-{
-    $opt_debug
-    # The first argument is the command name.
-    cmd="$nonopt"
-    test -z "$cmd" && \
-      func_fatal_help "you must specify a COMMAND"
-
-    # Handle -dlopen flags immediately.
-    for file in $execute_dlfiles; do
-      test -f "$file" \
-	|| func_fatal_help "\`$file' is not a file"
-
-      dir=
-      case $file in
-      *.la)
-	# Check to see that this really is a libtool archive.
-	func_lalib_unsafe_p "$file" \
-	  || func_fatal_help "\`$lib' is not a valid libtool archive"
-
-	# Read the libtool library.
-	dlname=
-	library_names=
-	func_source "$file"
-
-	# Skip this library if it cannot be dlopened.
-	if test -z "$dlname"; then
-	  # Warn if it was a shared library.
-	  test -n "$library_names" && \
-	    func_warning "\`$file' was not linked with \`-export-dynamic'"
-	  continue
-	fi
-
-	func_dirname "$file" "" "."
-	dir="$func_dirname_result"
-
-	if test -f "$dir/$objdir/$dlname"; then
-	  dir="$dir/$objdir"
-	else
-	  if test ! -f "$dir/$dlname"; then
-	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
-	  fi
-	fi
-	;;
-
-      *.lo)
-	# Just add the directory containing the .lo file.
-	func_dirname "$file" "" "."
-	dir="$func_dirname_result"
-	;;
-
-      *)
-	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
-	continue
-	;;
-      esac
-
-      # Get the absolute pathname.
-      absdir=`cd "$dir" && pwd`
-      test -n "$absdir" && dir="$absdir"
-
-      # Now add the directory to shlibpath_var.
-      if eval "test -z \"\$$shlibpath_var\""; then
-	eval "$shlibpath_var=\"\$dir\""
-      else
-	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
-      fi
-    done
-
-    # This variable tells wrapper scripts just to set shlibpath_var
-    # rather than running their programs.
-    libtool_execute_magic="$magic"
-
-    # Check if any of the arguments is a wrapper script.
-    args=
-    for file
-    do
-      case $file in
-      -*) ;;
-      *)
-	# Do a test to see if this is really a libtool program.
-	if func_ltwrapper_script_p "$file"; then
-	  func_source "$file"
-	  # Transform arg to wrapped name.
-	  file="$progdir/$program"
-	elif func_ltwrapper_executable_p "$file"; then
-	  func_ltwrapper_scriptname "$file"
-	  func_source "$func_ltwrapper_scriptname_result"
-	  # Transform arg to wrapped name.
-	  file="$progdir/$program"
-	fi
-	;;
-      esac
-      # Quote arguments (to preserve shell metacharacters).
-      func_quote_for_eval "$file"
-      args="$args $func_quote_for_eval_result"
-    done
-
-    if test "X$opt_dry_run" = Xfalse; then
-      if test -n "$shlibpath_var"; then
-	# Export the shlibpath_var.
-	eval "export $shlibpath_var"
-      fi
-
-      # Restore saved environment variables
-      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
-      do
-	eval "if test \"\${save_$lt_var+set}\" = set; then
-                $lt_var=\$save_$lt_var; export $lt_var
-	      else
-		$lt_unset $lt_var
-	      fi"
-      done
-
-      # Now prepare to actually exec the command.
-      exec_cmd="\$cmd$args"
-    else
-      # Display what would be done.
-      if test -n "$shlibpath_var"; then
-	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
-	$ECHO "export $shlibpath_var"
-      fi
-      $ECHO "$cmd$args"
-      exit $EXIT_SUCCESS
-    fi
-}
-
-test "$mode" = execute && func_mode_execute ${1+"$@"}
-
-
-# func_mode_finish arg...
-func_mode_finish ()
-{
-    $opt_debug
-    libdirs="$nonopt"
-    admincmds=
-
-    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
-      for dir
-      do
-	libdirs="$libdirs $dir"
-      done
-
-      for libdir in $libdirs; do
-	if test -n "$finish_cmds"; then
-	  # Do each command in the finish commands.
-	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
-'"$cmd"'"'
-	fi
-	if test -n "$finish_eval"; then
-	  # Do the single finish_eval.
-	  eval cmds=\"$finish_eval\"
-	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
-       $cmds"
-	fi
-      done
-    fi
-
-    # Exit here if they wanted silent mode.
-    $opt_silent && exit $EXIT_SUCCESS
-
-    $ECHO "X----------------------------------------------------------------------" | $Xsed
-    $ECHO "Libraries have been installed in:"
-    for libdir in $libdirs; do
-      $ECHO "   $libdir"
-    done
-    $ECHO
-    $ECHO "If you ever happen to want to link against installed libraries"
-    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
-    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
-    $ECHO "flag during linking and do at least one of the following:"
-    if test -n "$shlibpath_var"; then
-      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
-      $ECHO "     during execution"
-    fi
-    if test -n "$runpath_var"; then
-      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
-      $ECHO "     during linking"
-    fi
-    if test -n "$hardcode_libdir_flag_spec"; then
-      libdir=LIBDIR
-      eval flag=\"$hardcode_libdir_flag_spec\"
-
-      $ECHO "   - use the \`$flag' linker flag"
-    fi
-    if test -n "$admincmds"; then
-      $ECHO "   - have your system administrator run these commands:$admincmds"
-    fi
-    if test -f /etc/ld.so.conf; then
-      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
-    fi
-    $ECHO
-
-    $ECHO "See any operating system documentation about shared libraries for"
-    case $host in
-      solaris2.[6789]|solaris2.1[0-9])
-        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
-	$ECHO "pages."
-	;;
-      *)
-        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
-        ;;
-    esac
-    $ECHO "X----------------------------------------------------------------------" | $Xsed
-    exit $EXIT_SUCCESS
-}
-
-test "$mode" = finish && func_mode_finish ${1+"$@"}
-
-
-# func_mode_install arg...
-func_mode_install ()
-{
-    $opt_debug
-    # There may be an optional sh(1) argument at the beginning of
-    # install_prog (especially on Windows NT).
-    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
-       # Allow the use of GNU shtool's install command.
-       $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
-      # Aesthetically quote it.
-      func_quote_for_eval "$nonopt"
-      install_prog="$func_quote_for_eval_result "
-      arg=$1
-      shift
-    else
-      install_prog=
-      arg=$nonopt
-    fi
-
-    # The real first argument should be the name of the installation program.
-    # Aesthetically quote it.
-    func_quote_for_eval "$arg"
-    install_prog="$install_prog$func_quote_for_eval_result"
-
-    # We need to accept at least all the BSD install flags.
-    dest=
-    files=
-    opts=
-    prev=
-    install_type=
-    isdir=no
-    stripme=
-    for arg
-    do
-      if test -n "$dest"; then
-	files="$files $dest"
-	dest=$arg
-	continue
-      fi
-
-      case $arg in
-      -d) isdir=yes ;;
-      -f)
-	case " $install_prog " in
-	*[\\\ /]cp\ *) ;;
-	*) prev=$arg ;;
-	esac
-	;;
-      -g | -m | -o)
-	prev=$arg
-	;;
-      -s)
-	stripme=" -s"
-	continue
-	;;
-      -*)
-	;;
-      *)
-	# If the previous option needed an argument, then skip it.
-	if test -n "$prev"; then
-	  prev=
-	else
-	  dest=$arg
-	  continue
-	fi
-	;;
-      esac
-
-      # Aesthetically quote the argument.
-      func_quote_for_eval "$arg"
-      install_prog="$install_prog $func_quote_for_eval_result"
-    done
-
-    test -z "$install_prog" && \
-      func_fatal_help "you must specify an install program"
-
-    test -n "$prev" && \
-      func_fatal_help "the \`$prev' option requires an argument"
-
-    if test -z "$files"; then
-      if test -z "$dest"; then
-	func_fatal_help "no file or destination specified"
-      else
-	func_fatal_help "you must specify a destination"
-      fi
-    fi
-
-    # Strip any trailing slash from the destination.
-    func_stripname '' '/' "$dest"
-    dest=$func_stripname_result
-
-    # Check to see that the destination is a directory.
-    test -d "$dest" && isdir=yes
-    if test "$isdir" = yes; then
-      destdir="$dest"
-      destname=
-    else
-      func_dirname_and_basename "$dest" "" "."
-      destdir="$func_dirname_result"
-      destname="$func_basename_result"
-
-      # Not a directory, so check to see that there is only one file specified.
-      set dummy $files; shift
-      test "$#" -gt 1 && \
-	func_fatal_help "\`$dest' is not a directory"
-    fi
-    case $destdir in
-    [\\/]* | [A-Za-z]:[\\/]*) ;;
-    *)
-      for file in $files; do
-	case $file in
-	*.lo) ;;
-	*)
-	  func_fatal_help "\`$destdir' must be an absolute directory name"
-	  ;;
-	esac
-      done
-      ;;
-    esac
-
-    # This variable tells wrapper scripts just to set variables rather
-    # than running their programs.
-    libtool_install_magic="$magic"
-
-    staticlibs=
-    future_libdirs=
-    current_libdirs=
-    for file in $files; do
-
-      # Do each installation.
-      case $file in
-      *.$libext)
-	# Do the static libraries later.
-	staticlibs="$staticlibs $file"
-	;;
-
-      *.la)
-	# Check to see that this really is a libtool archive.
-	func_lalib_unsafe_p "$file" \
-	  || func_fatal_help "\`$file' is not a valid libtool archive"
-
-	library_names=
-	old_library=
-	relink_command=
-	func_source "$file"
-
-	# Add the libdir to current_libdirs if it is the destination.
-	if test "X$destdir" = "X$libdir"; then
-	  case "$current_libdirs " in
-	  *" $libdir "*) ;;
-	  *) current_libdirs="$current_libdirs $libdir" ;;
-	  esac
-	else
-	  # Note the libdir as a future libdir.
-	  case "$future_libdirs " in
-	  *" $libdir "*) ;;
-	  *) future_libdirs="$future_libdirs $libdir" ;;
-	  esac
-	fi
-
-	func_dirname "$file" "/" ""
-	dir="$func_dirname_result"
-	dir="$dir$objdir"
-
-	if test -n "$relink_command"; then
-	  # Determine the prefix the user has applied to our future dir.
-	  inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
-
-	  # Don't allow the user to place us outside of our expected
-	  # location b/c this prevents finding dependent libraries that
-	  # are installed to the same prefix.
-	  # At present, this check doesn't affect windows .dll's that
-	  # are installed into $libdir/../bin (currently, that works fine)
-	  # but it's something to keep an eye on.
-	  test "$inst_prefix_dir" = "$destdir" && \
-	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
-
-	  if test -n "$inst_prefix_dir"; then
-	    # Stick the inst_prefix_dir data into the link command.
-	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
-	  else
-	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
-	  fi
-
-	  func_warning "relinking \`$file'"
-	  func_show_eval "$relink_command" \
-	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
-	fi
-
-	# See the names of the shared library.
-	set dummy $library_names; shift
-	if test -n "$1"; then
-	  realname="$1"
-	  shift
-
-	  srcname="$realname"
-	  test -n "$relink_command" && srcname="$realname"T
-
-	  # Install the shared library and build the symlinks.
-	  func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
-	      'exit $?'
-	  tstripme="$stripme"
-	  case $host_os in
-	  cygwin* | mingw* | pw32* | cegcc*)
-	    case $realname in
-	    *.dll.a)
-	      tstripme=""
-	      ;;
-	    esac
-	    ;;
-	  esac
-	  if test -n "$tstripme" && test -n "$striplib"; then
-	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
-	  fi
-
-	  if test "$#" -gt 0; then
-	    # Delete the old symlinks, and create new ones.
-	    # Try `ln -sf' first, because the `ln' binary might depend on
-	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
-	    # so we also need to try rm && ln -s.
-	    for linkname
-	    do
-	      test "$linkname" != "$realname" \
-		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
-	    done
-	  fi
-
-	  # Do each command in the postinstall commands.
-	  lib="$destdir/$realname"
-	  func_execute_cmds "$postinstall_cmds" 'exit $?'
-	fi
-
-	# Install the pseudo-library for information purposes.
-	func_basename "$file"
-	name="$func_basename_result"
-	instname="$dir/$name"i
-	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
-
-	# Maybe install the static library, too.
-	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
-	;;
-
-      *.lo)
-	# Install (i.e. copy) a libtool object.
-
-	# Figure out destination file name, if it wasn't already specified.
-	if test -n "$destname"; then
-	  destfile="$destdir/$destname"
-	else
-	  func_basename "$file"
-	  destfile="$func_basename_result"
-	  destfile="$destdir/$destfile"
-	fi
-
-	# Deduce the name of the destination old-style object file.
-	case $destfile in
-	*.lo)
-	  func_lo2o "$destfile"
-	  staticdest=$func_lo2o_result
-	  ;;
-	*.$objext)
-	  staticdest="$destfile"
-	  destfile=
-	  ;;
-	*)
-	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
-	  ;;
-	esac
-
-	# Install the libtool object if requested.
-	test -n "$destfile" && \
-	  func_show_eval "$install_prog $file $destfile" 'exit $?'
-
-	# Install the old object if enabled.
-	if test "$build_old_libs" = yes; then
-	  # Deduce the name of the old-style object file.
-	  func_lo2o "$file"
-	  staticobj=$func_lo2o_result
-	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
-	fi
-	exit $EXIT_SUCCESS
-	;;
-
-      *)
-	# Figure out destination file name, if it wasn't already specified.
-	if test -n "$destname"; then
-	  destfile="$destdir/$destname"
-	else
-	  func_basename "$file"
-	  destfile="$func_basename_result"
-	  destfile="$destdir/$destfile"
-	fi
-
-	# If the file is missing, and there is a .exe on the end, strip it
-	# because it is most likely a libtool script we actually want to
-	# install
-	stripped_ext=""
-	case $file in
-	  *.exe)
-	    if test ! -f "$file"; then
-	      func_stripname '' '.exe' "$file"
-	      file=$func_stripname_result
-	      stripped_ext=".exe"
-	    fi
-	    ;;
-	esac
-
-	# Do a test to see if this is really a libtool program.
-	case $host in
-	*cygwin* | *mingw*)
-	    if func_ltwrapper_executable_p "$file"; then
-	      func_ltwrapper_scriptname "$file"
-	      wrapper=$func_ltwrapper_scriptname_result
-	    else
-	      func_stripname '' '.exe' "$file"
-	      wrapper=$func_stripname_result
-	    fi
-	    ;;
-	*)
-	    wrapper=$file
-	    ;;
-	esac
-	if func_ltwrapper_script_p "$wrapper"; then
-	  notinst_deplibs=
-	  relink_command=
-
-	  func_source "$wrapper"
-
-	  # Check the variables that should have been set.
-	  test -z "$generated_by_libtool_version" && \
-	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
-
-	  finalize=yes
-	  for lib in $notinst_deplibs; do
-	    # Check to see that each library is installed.
-	    libdir=
-	    if test -f "$lib"; then
-	      func_source "$lib"
-	    fi
-	    libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
-	    if test -n "$libdir" && test ! -f "$libfile"; then
-	      func_warning "\`$lib' has not been installed in \`$libdir'"
-	      finalize=no
-	    fi
-	  done
-
-	  relink_command=
-	  func_source "$wrapper"
-
-	  outputname=
-	  if test "$fast_install" = no && test -n "$relink_command"; then
-	    $opt_dry_run || {
-	      if test "$finalize" = yes; then
-	        tmpdir=`func_mktempdir`
-		func_basename "$file$stripped_ext"
-		file="$func_basename_result"
-	        outputname="$tmpdir/$file"
-	        # Replace the output file specification.
-	        relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
-
-	        $opt_silent || {
-	          func_quote_for_expand "$relink_command"
-		  eval "func_echo $func_quote_for_expand_result"
-	        }
-	        if eval "$relink_command"; then :
-	          else
-		  func_error "error: relink \`$file' with the above command before installing it"
-		  $opt_dry_run || ${RM}r "$tmpdir"
-		  continue
-	        fi
-	        file="$outputname"
-	      else
-	        func_warning "cannot relink \`$file'"
-	      fi
-	    }
-	  else
-	    # Install the binary that we compiled earlier.
-	    file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
-	  fi
-	fi
-
-	# remove .exe since cygwin /usr/bin/install will append another
-	# one anyway
-	case $install_prog,$host in
-	*/usr/bin/install*,*cygwin*)
-	  case $file:$destfile in
-	  *.exe:*.exe)
-	    # this is ok
-	    ;;
-	  *.exe:*)
-	    destfile=$destfile.exe
-	    ;;
-	  *:*.exe)
-	    func_stripname '' '.exe' "$destfile"
-	    destfile=$func_stripname_result
-	    ;;
-	  esac
-	  ;;
-	esac
-	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
-	$opt_dry_run || if test -n "$outputname"; then
-	  ${RM}r "$tmpdir"
-	fi
-	;;
-      esac
-    done
-
-    for file in $staticlibs; do
-      func_basename "$file"
-      name="$func_basename_result"
-
-      # Set up the ranlib parameters.
-      oldlib="$destdir/$name"
-
-      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
-
-      if test -n "$stripme" && test -n "$old_striplib"; then
-	func_show_eval "$old_striplib $oldlib" 'exit $?'
-      fi
-
-      # Do each command in the postinstall commands.
-      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
-    done
-
-    test -n "$future_libdirs" && \
-      func_warning "remember to run \`$progname --finish$future_libdirs'"
-
-    if test -n "$current_libdirs"; then
-      # Maybe just do a dry run.
-      $opt_dry_run && current_libdirs=" -n$current_libdirs"
-      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
-    else
-      exit $EXIT_SUCCESS
-    fi
-}
-
-test "$mode" = install && func_mode_install ${1+"$@"}
-
-
-# func_generate_dlsyms outputname originator pic_p
-# Extract symbols from dlprefiles and create ${outputname}S.o with
-# a dlpreopen symbol table.
-func_generate_dlsyms ()
-{
-    $opt_debug
-    my_outputname="$1"
-    my_originator="$2"
-    my_pic_p="${3-no}"
-    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
-    my_dlsyms=
-
-    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-      if test -n "$NM" && test -n "$global_symbol_pipe"; then
-	my_dlsyms="${my_outputname}S.c"
-      else
-	func_error "not configured to extract global symbols from dlpreopened files"
-      fi
-    fi
-
-    if test -n "$my_dlsyms"; then
-      case $my_dlsyms in
-      "") ;;
-      *.c)
-	# Discover the nlist of each of the dlfiles.
-	nlist="$output_objdir/${my_outputname}.nm"
-
-	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
-
-	# Parse the name list into a source file.
-	func_verbose "creating $output_objdir/$my_dlsyms"
-
-	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
-/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
-/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
-
-#ifdef __cplusplus
-extern \"C\" {
-#endif
-
-/* External symbol declarations for the compiler. */\
-"
-
-	if test "$dlself" = yes; then
-	  func_verbose "generating symbol list for \`$output'"
-
-	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
-
-	  # Add our own program objects to the symbol list.
-	  progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-	  for progfile in $progfiles; do
-	    func_verbose "extracting global C symbols from \`$progfile'"
-	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
-	  done
-
-	  if test -n "$exclude_expsyms"; then
-	    $opt_dry_run || {
-	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
-	      eval '$MV "$nlist"T "$nlist"'
-	    }
-	  fi
-
-	  if test -n "$export_symbols_regex"; then
-	    $opt_dry_run || {
-	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
-	      eval '$MV "$nlist"T "$nlist"'
-	    }
-	  fi
-
-	  # Prepare the list of exported symbols
-	  if test -z "$export_symbols"; then
-	    export_symbols="$output_objdir/$outputname.exp"
-	    $opt_dry_run || {
-	      $RM $export_symbols
-	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
-	      case $host in
-	      *cygwin* | *mingw* | *cegcc* )
-                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
-                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
-	        ;;
-	      esac
-	    }
-	  else
-	    $opt_dry_run || {
-	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
-	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
-	      eval '$MV "$nlist"T "$nlist"'
-	      case $host in
-	        *cygwin | *mingw* | *cegcc* )
-	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
-	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
-	          ;;
-	      esac
-	    }
-	  fi
-	fi
-
-	for dlprefile in $dlprefiles; do
-	  func_verbose "extracting global C symbols from \`$dlprefile'"
-	  func_basename "$dlprefile"
-	  name="$func_basename_result"
-	  $opt_dry_run || {
-	    eval '$ECHO ": $name " >> "$nlist"'
-	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
-	  }
-	done
-
-	$opt_dry_run || {
-	  # Make sure we have at least an empty file.
-	  test -f "$nlist" || : > "$nlist"
-
-	  if test -n "$exclude_expsyms"; then
-	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
-	    $MV "$nlist"T "$nlist"
-	  fi
-
-	  # Try sorting and uniquifying the output.
-	  if $GREP -v "^: " < "$nlist" |
-	      if sort -k 3 </dev/null >/dev/null 2>&1; then
-		sort -k 3
-	      else
-		sort +2
-	      fi |
-	      uniq > "$nlist"S; then
-	    :
-	  else
-	    $GREP -v "^: " < "$nlist" > "$nlist"S
-	  fi
-
-	  if test -f "$nlist"S; then
-	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
-	  else
-	    $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
-	  fi
-
-	  $ECHO >> "$output_objdir/$my_dlsyms" "\
-
-/* The mapping between symbol names and symbols.  */
-typedef struct {
-  const char *name;
-  void *address;
-} lt_dlsymlist;
-"
-	  case $host in
-	  *cygwin* | *mingw* | *cegcc* )
-	    $ECHO >> "$output_objdir/$my_dlsyms" "\
-/* DATA imports from DLLs on WIN32 con't be const, because
-   runtime relocations are performed -- see ld's documentation
-   on pseudo-relocs.  */"
-	    lt_dlsym_const= ;;
-	  *osf5*)
-	    echo >> "$output_objdir/$my_dlsyms" "\
-/* This system does not cope well with relocations in const data */"
-	    lt_dlsym_const= ;;
-	  *)
-	    lt_dlsym_const=const ;;
-	  esac
-
-	  $ECHO >> "$output_objdir/$my_dlsyms" "\
-extern $lt_dlsym_const lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[];
-$lt_dlsym_const lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[] =
-{\
-  { \"$my_originator\", (void *) 0 },"
-
-	  case $need_lib_prefix in
-	  no)
-	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
-	    ;;
-	  *)
-	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
-	    ;;
-	  esac
-	  $ECHO >> "$output_objdir/$my_dlsyms" "\
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt_${my_prefix}_LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif\
-"
-	} # !$opt_dry_run
-
-	pic_flag_for_symtable=
-	case "$compile_command " in
-	*" -static "*) ;;
-	*)
-	  case $host in
-	  # compiling the symbol table file with pic_flag works around
-	  # a FreeBSD bug that causes programs to crash when -lm is
-	  # linked before any other PIC object.  But we must not use
-	  # pic_flag when linking with -static.  The problem exists in
-	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
-	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
-	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
-	  *-*-hpux*)
-	    pic_flag_for_symtable=" $pic_flag"  ;;
-	  *)
-	    if test "X$my_pic_p" != Xno; then
-	      pic_flag_for_symtable=" $pic_flag"
-	    fi
-	    ;;
-	  esac
-	  ;;
-	esac
-	symtab_cflags=
-	for arg in $LTCFLAGS; do
-	  case $arg in
-	  -pie | -fpie | -fPIE) ;;
-	  *) symtab_cflags="$symtab_cflags $arg" ;;
-	  esac
-	done
-
-	# Now compile the dynamic symbol file.
-	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
-
-	# Clean up the generated files.
-	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
-
-	# Transform the symbol file into the correct name.
-	symfileobj="$output_objdir/${my_outputname}S.$objext"
-	case $host in
-	*cygwin* | *mingw* | *cegcc* )
-	  if test -f "$output_objdir/$my_outputname.def"; then
-	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
-	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
-	  else
-	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
-	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
-	  fi
-	  ;;
-	*)
-	  compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
-	  finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
-	  ;;
-	esac
-	;;
-      *)
-	func_fatal_error "unknown suffix for \`$my_dlsyms'"
-	;;
-      esac
-    else
-      # We keep going just in case the user didn't refer to
-      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
-      # really was required.
-
-      # Nullify the symbol file.
-      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
-      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
-    fi
-}
-
-# func_win32_libid arg
-# return the library type of file 'arg'
-#
-# Need a lot of goo to handle *both* DLLs and import libs
-# Has to be a shell function in order to 'eat' the argument
-# that is supplied when $file_magic_command is called.
-func_win32_libid ()
-{
-  $opt_debug
-  win32_libid_type="unknown"
-  win32_fileres=`file -L $1 2>/dev/null`
-  case $win32_fileres in
-  *ar\ archive\ import\ library*) # definitely import
-    win32_libid_type="x86 archive import"
-    ;;
-  *ar\ archive*) # could be an import, or static
-    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
-       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
-      win32_nmres=`eval $NM -f posix -A $1 |
-	$SED -n -e '
-	    1,100{
-		/ I /{
-		    s,.*,import,
-		    p
-		    q
-		}
-	    }'`
-      case $win32_nmres in
-      import*)  win32_libid_type="x86 archive import";;
-      *)        win32_libid_type="x86 archive static";;
-      esac
-    fi
-    ;;
-  *DLL*)
-    win32_libid_type="x86 DLL"
-    ;;
-  *executable*) # but shell scripts are "executable" too...
-    case $win32_fileres in
-    *MS\ Windows\ PE\ Intel*)
-      win32_libid_type="x86 DLL"
-      ;;
-    esac
-    ;;
-  esac
-  $ECHO "$win32_libid_type"
-}
-
-
-
-# func_extract_an_archive dir oldlib
-func_extract_an_archive ()
-{
-    $opt_debug
-    f_ex_an_ar_dir="$1"; shift
-    f_ex_an_ar_oldlib="$1"
-    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
-    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
-     :
-    else
-      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
-    fi
-}
-
-
-# func_extract_archives gentop oldlib ...
-func_extract_archives ()
-{
-    $opt_debug
-    my_gentop="$1"; shift
-    my_oldlibs=${1+"$@"}
-    my_oldobjs=""
-    my_xlib=""
-    my_xabs=""
-    my_xdir=""
-
-    for my_xlib in $my_oldlibs; do
-      # Extract the objects.
-      case $my_xlib in
-	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
-	*) my_xabs=`pwd`"/$my_xlib" ;;
-      esac
-      func_basename "$my_xlib"
-      my_xlib="$func_basename_result"
-      my_xlib_u=$my_xlib
-      while :; do
-        case " $extracted_archives " in
-	*" $my_xlib_u "*)
-	  func_arith $extracted_serial + 1
-	  extracted_serial=$func_arith_result
-	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
-	*) break ;;
-	esac
-      done
-      extracted_archives="$extracted_archives $my_xlib_u"
-      my_xdir="$my_gentop/$my_xlib_u"
-
-      func_mkdir_p "$my_xdir"
-
-      case $host in
-      *-darwin*)
-	func_verbose "Extracting $my_xabs"
-	# Do not bother doing anything if just a dry run
-	$opt_dry_run || {
-	  darwin_orig_dir=`pwd`
-	  cd $my_xdir || exit $?
-	  darwin_archive=$my_xabs
-	  darwin_curdir=`pwd`
-	  darwin_base_archive=`basename "$darwin_archive"`
-	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
-	  if test -n "$darwin_arches"; then
-	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
-	    darwin_arch=
-	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
-	    for darwin_arch in  $darwin_arches ; do
-	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
-	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
-	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
-	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
-	      cd "$darwin_curdir"
-	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
-	    done # $darwin_arches
-            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
-	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
-	    darwin_file=
-	    darwin_files=
-	    for darwin_file in $darwin_filelist; do
-	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
-	      $LIPO -create -output "$darwin_file" $darwin_files
-	    done # $darwin_filelist
-	    $RM -rf unfat-$$
-	    cd "$darwin_orig_dir"
-	  else
-	    cd $darwin_orig_dir
-	    func_extract_an_archive "$my_xdir" "$my_xabs"
-	  fi # $darwin_arches
-	} # !$opt_dry_run
-	;;
-      *)
-        func_extract_an_archive "$my_xdir" "$my_xabs"
-	;;
-      esac
-      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
-    done
-
-    func_extract_archives_result="$my_oldobjs"
-}
-
-
-
-# func_emit_wrapper_part1 [arg=no]
-#
-# Emit the first part of a libtool wrapper script on stdout.
-# For more information, see the description associated with
-# func_emit_wrapper(), below.
-func_emit_wrapper_part1 ()
-{
-	func_emit_wrapper_part1_arg1=no
-	if test -n "$1" ; then
-	  func_emit_wrapper_part1_arg1=$1
-	fi
-
-	$ECHO "\
-#! $SHELL
-
-# $output - temporary wrapper script for $objdir/$outputname
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# The $output program cannot be directly executed until all the libtool
-# libraries that it depends on are installed.
-#
-# This wrapper script should never be moved out of the build directory.
-# If it is, it will not operate correctly.
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed='${SED} -e 1s/^X//'
-sed_quote_subst='$sed_quote_subst'
-
-# Be Bourne compatible
-if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-  setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
-fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-relink_command=\"$relink_command\"
-
-# This environment variable determines our operation mode.
-if test \"\$libtool_install_magic\" = \"$magic\"; then
-  # install mode needs the following variables:
-  generated_by_libtool_version='$macro_version'
-  notinst_deplibs='$notinst_deplibs'
-else
-  # When we are sourced in execute mode, \$file and \$ECHO are already set.
-  if test \"\$libtool_execute_magic\" != \"$magic\"; then
-    ECHO=\"$qecho\"
-    file=\"\$0\"
-    # Make sure echo works.
-    if test \"X\$1\" = X--no-reexec; then
-      # Discard the --no-reexec flag, and continue.
-      shift
-    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
-      # Yippee, \$ECHO works!
-      :
-    else
-      # Restart under the correct shell, and then maybe \$ECHO will work.
-      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
-    fi
-  fi\
-"
-	$ECHO "\
-
-  # Find the directory that this script lives in.
-  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
-  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
-
-  # Follow symbolic links until we get to the real thisdir.
-  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
-  while test -n \"\$file\"; do
-    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
-
-    # If there was a directory component, then change thisdir.
-    if test \"x\$destdir\" != \"x\$file\"; then
-      case \"\$destdir\" in
-      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
-      *) thisdir=\"\$thisdir/\$destdir\" ;;
-      esac
-    fi
-
-    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
-    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
-  done
-"
-}
-# end: func_emit_wrapper_part1
-
-# func_emit_wrapper_part2 [arg=no]
-#
-# Emit the second part of a libtool wrapper script on stdout.
-# For more information, see the description associated with
-# func_emit_wrapper(), below.
-func_emit_wrapper_part2 ()
-{
-	func_emit_wrapper_part2_arg1=no
-	if test -n "$1" ; then
-	  func_emit_wrapper_part2_arg1=$1
-	fi
-
-	$ECHO "\
-
-  # Usually 'no', except on cygwin/mingw when embedded into
-  # the cwrapper.
-  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
-  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
-    # special case for '.'
-    if test \"\$thisdir\" = \".\"; then
-      thisdir=\`pwd\`
-    fi
-    # remove .libs from thisdir
-    case \"\$thisdir\" in
-    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
-    $objdir )   thisdir=. ;;
-    esac
-  fi
-
-  # Try to get the absolute directory name.
-  absdir=\`cd \"\$thisdir\" && pwd\`
-  test -n \"\$absdir\" && thisdir=\"\$absdir\"
-"
-
-	if test "$fast_install" = yes; then
-	  $ECHO "\
-  program=lt-'$outputname'$exeext
-  progdir=\"\$thisdir/$objdir\"
-
-  if test ! -f \"\$progdir/\$program\" ||
-     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
-       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
-
-    file=\"\$\$-\$program\"
-
-    if test ! -d \"\$progdir\"; then
-      $MKDIR \"\$progdir\"
-    else
-      $RM \"\$progdir/\$file\"
-    fi"
-
-	  $ECHO "\
-
-    # relink executable if necessary
-    if test -n \"\$relink_command\"; then
-      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
-      else
-	$ECHO \"\$relink_command_output\" >&2
-	$RM \"\$progdir/\$file\"
-	exit 1
-      fi
-    fi
-
-    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
-    { $RM \"\$progdir/\$program\";
-      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
-    $RM \"\$progdir/\$file\"
-  fi"
-	else
-	  $ECHO "\
-  program='$outputname'
-  progdir=\"\$thisdir/$objdir\"
-"
-	fi
-
-	$ECHO "\
-
-  if test -f \"\$progdir/\$program\"; then"
-
-	# Export our shlibpath_var if we have one.
-	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
-	  $ECHO "\
-    # Add our own library path to $shlibpath_var
-    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
-
-    # Some systems cannot cope with colon-terminated $shlibpath_var
-    # The second colon is a workaround for a bug in BeOS R4 sed
-    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
-
-    export $shlibpath_var
-"
-	fi
-
-	# fixup the dll searchpath if we need to.
-	if test -n "$dllsearchpath"; then
-	  $ECHO "\
-    # Add the dll search path components to the executable PATH
-    PATH=$dllsearchpath:\$PATH
-"
-	fi
-
-	$ECHO "\
-    if test \"\$libtool_execute_magic\" != \"$magic\"; then
-      # Run the actual program with our arguments.
-"
-	case $host in
-	# Backslashes separate directories on plain windows
-	*-*-mingw | *-*-os2* | *-cegcc*)
-	  $ECHO "\
-      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
-"
-	  ;;
-
-	*)
-	  $ECHO "\
-      exec \"\$progdir/\$program\" \${1+\"\$@\"}
-"
-	  ;;
-	esac
-	$ECHO "\
-      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
-      exit 1
-    fi
-  else
-    # The program doesn't exist.
-    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
-    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
-    $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
-    exit 1
-  fi
-fi\
-"
-}
-# end: func_emit_wrapper_part2
-
-
-# func_emit_wrapper [arg=no]
-#
-# Emit a libtool wrapper script on stdout.
-# Don't directly open a file because we may want to
-# incorporate the script contents within a cygwin/mingw
-# wrapper executable.  Must ONLY be called from within
-# func_mode_link because it depends on a number of variables
-# set therein.
-#
-# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
-# variable will take.  If 'yes', then the emitted script
-# will assume that the directory in which it is stored is
-# the $objdir directory.  This is a cygwin/mingw-specific
-# behavior.
-func_emit_wrapper ()
-{
-	func_emit_wrapper_arg1=no
-	if test -n "$1" ; then
-	  func_emit_wrapper_arg1=$1
-	fi
-
-	# split this up so that func_emit_cwrapperexe_src
-	# can call each part independently.
-	func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
-	func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
-}
-
-
-# func_to_host_path arg
-#
-# Convert paths to host format when used with build tools.
-# Intended for use with "native" mingw (where libtool itself
-# is running under the msys shell), or in the following cross-
-# build environments:
-#    $build          $host
-#    mingw (msys)    mingw  [e.g. native]
-#    cygwin          mingw
-#    *nix + wine     mingw
-# where wine is equipped with the `winepath' executable.
-# In the native mingw case, the (msys) shell automatically
-# converts paths for any non-msys applications it launches,
-# but that facility isn't available from inside the cwrapper.
-# Similar accommodations are necessary for $host mingw and
-# $build cygwin.  Calling this function does no harm for other
-# $host/$build combinations not listed above.
-#
-# ARG is the path (on $build) that should be converted to
-# the proper representation for $host. The result is stored
-# in $func_to_host_path_result.
-func_to_host_path ()
-{
-  func_to_host_path_result="$1"
-  if test -n "$1" ; then
-    case $host in
-      *mingw* )
-        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-        case $build in
-          *mingw* ) # actually, msys
-            # awkward: cmd appends spaces to result
-            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
-            func_to_host_path_tmp1=`( cmd //c echo "$1" |\
-              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
-            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
-              $SED -e "$lt_sed_naive_backslashify"`
-            ;;
-          *cygwin* )
-            func_to_host_path_tmp1=`cygpath -w "$1"`
-            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
-              $SED -e "$lt_sed_naive_backslashify"`
-            ;;
-          * )
-            # Unfortunately, winepath does not exit with a non-zero
-            # error code, so we are forced to check the contents of
-            # stdout. On the other hand, if the command is not
-            # found, the shell will set an exit code of 127 and print
-            # *an error message* to stdout. So we must check for both
-            # error code of zero AND non-empty stdout, which explains
-            # the odd construction:
-            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
-            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
-              func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
-                $SED -e "$lt_sed_naive_backslashify"`
-            else
-              # Allow warning below.
-              func_to_host_path_result=""
-            fi
-            ;;
-        esac
-        if test -z "$func_to_host_path_result" ; then
-          func_error "Could not determine host path corresponding to"
-          func_error "  '$1'"
-          func_error "Continuing, but uninstalled executables may not work."
-          # Fallback:
-          func_to_host_path_result="$1"
-        fi
-        ;;
-    esac
-  fi
-}
-# end: func_to_host_path
-
-# func_to_host_pathlist arg
-#
-# Convert pathlists to host format when used with build tools.
-# See func_to_host_path(), above. This function supports the
-# following $build/$host combinations (but does no harm for
-# combinations not listed here):
-#    $build          $host
-#    mingw (msys)    mingw  [e.g. native]
-#    cygwin          mingw
-#    *nix + wine     mingw
-#
-# Path separators are also converted from $build format to
-# $host format. If ARG begins or ends with a path separator
-# character, it is preserved (but converted to $host format)
-# on output.
-#
-# ARG is a pathlist (on $build) that should be converted to
-# the proper representation on $host. The result is stored
-# in $func_to_host_pathlist_result.
-func_to_host_pathlist ()
-{
-  func_to_host_pathlist_result="$1"
-  if test -n "$1" ; then
-    case $host in
-      *mingw* )
-        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-        # Remove leading and trailing path separator characters from
-        # ARG. msys behavior is inconsistent here, cygpath turns them
-        # into '.;' and ';.', and winepath ignores them completely.
-        func_to_host_pathlist_tmp2="$1"
-        # Once set for this call, this variable should not be
-        # reassigned. It is used in tha fallback case.
-        func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
-          $SED -e 's|^:*||' -e 's|:*$||'`
-        case $build in
-          *mingw* ) # Actually, msys.
-            # Awkward: cmd appends spaces to result.
-            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
-            func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
-              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
-            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
-              $SED -e "$lt_sed_naive_backslashify"`
-            ;;
-          *cygwin* )
-            func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
-            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
-              $SED -e "$lt_sed_naive_backslashify"`
-            ;;
-          * )
-            # unfortunately, winepath doesn't convert pathlists
-            func_to_host_pathlist_result=""
-            func_to_host_pathlist_oldIFS=$IFS
-            IFS=:
-            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
-              IFS=$func_to_host_pathlist_oldIFS
-              if test -n "$func_to_host_pathlist_f" ; then
-                func_to_host_path "$func_to_host_pathlist_f"
-                if test -n "$func_to_host_path_result" ; then
-                  if test -z "$func_to_host_pathlist_result" ; then
-                    func_to_host_pathlist_result="$func_to_host_path_result"
-                  else
-                    func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
-                  fi
-                fi
-              fi
-              IFS=:
-            done
-            IFS=$func_to_host_pathlist_oldIFS
-            ;;
-        esac
-        if test -z "$func_to_host_pathlist_result" ; then
-          func_error "Could not determine the host path(s) corresponding to"
-          func_error "  '$1'"
-          func_error "Continuing, but uninstalled executables may not work."
-          # Fallback. This may break if $1 contains DOS-style drive
-          # specifications. The fix is not to complicate the expression
-          # below, but for the user to provide a working wine installation
-          # with winepath so that path translation in the cross-to-mingw
-          # case works properly.
-          lt_replace_pathsep_nix_to_dos="s|:|;|g"
-          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
-            $SED -e "$lt_replace_pathsep_nix_to_dos"`
-        fi
-        # Now, add the leading and trailing path separators back
-        case "$1" in
-          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
-            ;;
-        esac
-        case "$1" in
-          *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
-            ;;
-        esac
-        ;;
-    esac
-  fi
-}
-# end: func_to_host_pathlist
-
-# func_emit_cwrapperexe_src
-# emit the source code for a wrapper executable on stdout
-# Must ONLY be called from within func_mode_link because
-# it depends on a number of variable set therein.
-func_emit_cwrapperexe_src ()
-{
-	cat <<EOF
-
-/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
-   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-
-   The $output program cannot be directly executed until all the libtool
-   libraries that it depends on are installed.
-
-   This wrapper executable should never be moved out of the build directory.
-   If it is, it will not operate correctly.
-
-   Currently, it simply execs the wrapper *script* "$SHELL $output",
-   but could eventually absorb all of the scripts functionality and
-   exec $objdir/$outputname directly.
-*/
-EOF
-	    cat <<"EOF"
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef _MSC_VER
-# include <direct.h>
-# include <process.h>
-# include <io.h>
-# define setmode _setmode
-#else
-# include <unistd.h>
-# include <stdint.h>
-# ifdef __CYGWIN__
-#  include <io.h>
-#  define HAVE_SETENV
-#  ifdef __STRICT_ANSI__
-char *realpath (const char *, char *);
-int putenv (char *);
-int setenv (const char *, const char *, int);
-#  endif
-# endif
-#endif
-#include <malloc.h>
-#include <stdarg.h>
-#include <assert.h>
-#include <string.h>
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-
-#if defined(PATH_MAX)
-# define LT_PATHMAX PATH_MAX
-#elif defined(MAXPATHLEN)
-# define LT_PATHMAX MAXPATHLEN
-#else
-# define LT_PATHMAX 1024
-#endif
-
-#ifndef S_IXOTH
-# define S_IXOTH 0
-#endif
-#ifndef S_IXGRP
-# define S_IXGRP 0
-#endif
-
-#ifdef _MSC_VER
-# define S_IXUSR _S_IEXEC
-# define stat _stat
-# ifndef _INTPTR_T_DEFINED
-#  define intptr_t int
-# endif
-#endif
-
-#ifndef DIR_SEPARATOR
-# define DIR_SEPARATOR '/'
-# define PATH_SEPARATOR ':'
-#endif
-
-#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
-  defined (__OS2__)
-# define HAVE_DOS_BASED_FILE_SYSTEM
-# define FOPEN_WB "wb"
-# ifndef DIR_SEPARATOR_2
-#  define DIR_SEPARATOR_2 '\\'
-# endif
-# ifndef PATH_SEPARATOR_2
-#  define PATH_SEPARATOR_2 ';'
-# endif
-#endif
-
-#ifndef DIR_SEPARATOR_2
-# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
-#else /* DIR_SEPARATOR_2 */
-# define IS_DIR_SEPARATOR(ch) \
-	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
-#endif /* DIR_SEPARATOR_2 */
-
-#ifndef PATH_SEPARATOR_2
-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
-#else /* PATH_SEPARATOR_2 */
-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
-#endif /* PATH_SEPARATOR_2 */
-
-#ifdef __CYGWIN__
-# define FOPEN_WB "wb"
-#endif
-
-#ifndef FOPEN_WB
-# define FOPEN_WB "w"
-#endif
-#ifndef _O_BINARY
-# define _O_BINARY 0
-#endif
-
-#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
-#define XFREE(stale) do { \
-  if (stale) { free ((void *) stale); stale = 0; } \
-} while (0)
-
-#undef LTWRAPPER_DEBUGPRINTF
-#if defined DEBUGWRAPPER
-# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
-static void
-ltwrapper_debugprintf (const char *fmt, ...)
-{
-    va_list args;
-    va_start (args, fmt);
-    (void) vfprintf (stderr, fmt, args);
-    va_end (args);
-}
-#else
-# define LTWRAPPER_DEBUGPRINTF(args)
-#endif
-
-const char *program_name = NULL;
-
-void *xmalloc (size_t num);
-char *xstrdup (const char *string);
-const char *base_name (const char *name);
-char *find_executable (const char *wrapper);
-char *chase_symlinks (const char *pathspec);
-int make_executable (const char *path);
-int check_executable (const char *path);
-char *strendzap (char *str, const char *pat);
-void lt_fatal (const char *message, ...);
-void lt_setenv (const char *name, const char *value);
-char *lt_extend_str (const char *orig_value, const char *add, int to_end);
-void lt_opt_process_env_set (const char *arg);
-void lt_opt_process_env_prepend (const char *arg);
-void lt_opt_process_env_append (const char *arg);
-int lt_split_name_value (const char *arg, char** name, char** value);
-void lt_update_exe_path (const char *name, const char *value);
-void lt_update_lib_path (const char *name, const char *value);
-
-static const char *script_text_part1 =
-EOF
-
-	    func_emit_wrapper_part1 yes |
-	        $SED -e 's/\([\\"]\)/\\\1/g' \
-	             -e 's/^/  "/' -e 's/$/\\n"/'
-	    echo ";"
-	    cat <<EOF
-
-static const char *script_text_part2 =
-EOF
-	    func_emit_wrapper_part2 yes |
-	        $SED -e 's/\([\\"]\)/\\\1/g' \
-	             -e 's/^/  "/' -e 's/$/\\n"/'
-	    echo ";"
-
-	    cat <<EOF
-const char * MAGIC_EXE = "$magic_exe";
-const char * LIB_PATH_VARNAME = "$shlibpath_var";
-EOF
-
-	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
-              func_to_host_pathlist "$temp_rpath"
-	      cat <<EOF
-const char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
-EOF
-	    else
-	      cat <<"EOF"
-const char * LIB_PATH_VALUE   = "";
-EOF
-	    fi
-
-	    if test -n "$dllsearchpath"; then
-              func_to_host_pathlist "$dllsearchpath:"
-	      cat <<EOF
-const char * EXE_PATH_VARNAME = "PATH";
-const char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
-EOF
-	    else
-	      cat <<"EOF"
-const char * EXE_PATH_VARNAME = "";
-const char * EXE_PATH_VALUE   = "";
-EOF
-	    fi
-
-	    if test "$fast_install" = yes; then
-	      cat <<EOF
-const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
-EOF
-	    else
-	      cat <<EOF
-const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
-EOF
-	    fi
-
-
-	    cat <<"EOF"
-
-#define LTWRAPPER_OPTION_PREFIX         "--lt-"
-#define LTWRAPPER_OPTION_PREFIX_LENGTH  5
-
-static const size_t opt_prefix_len         = LTWRAPPER_OPTION_PREFIX_LENGTH;
-static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
-
-static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
-
-static const size_t env_set_opt_len     = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
-static const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
-  /* argument is putenv-style "foo=bar", value of foo is set to bar */
-
-static const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
-static const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX "env-prepend";
-  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
-
-static const size_t env_append_opt_len  = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
-static const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
-  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
-
-int
-main (int argc, char *argv[])
-{
-  char **newargz;
-  int  newargc;
-  char *tmp_pathspec;
-  char *actual_cwrapper_path;
-  char *actual_cwrapper_name;
-  char *target_name;
-  char *lt_argv_zero;
-  intptr_t rval = 127;
-
-  int i;
-
-  program_name = (char *) xstrdup (base_name (argv[0]));
-  LTWRAPPER_DEBUGPRINTF (("(main) argv[0]      : %s\n", argv[0]));
-  LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
-
-  /* very simple arg parsing; don't want to rely on getopt */
-  for (i = 1; i < argc; i++)
-    {
-      if (strcmp (argv[i], dumpscript_opt) == 0)
-	{
-EOF
-	    case "$host" in
-	      *mingw* | *cygwin* )
-		# make stdout use "unix" line endings
-		echo "          setmode(1,_O_BINARY);"
-		;;
-	      esac
-
-	    cat <<"EOF"
-	  printf ("%s", script_text_part1);
-	  printf ("%s", script_text_part2);
-	  return 0;
-	}
-    }
-
-  newargz = XMALLOC (char *, argc + 1);
-  tmp_pathspec = find_executable (argv[0]);
-  if (tmp_pathspec == NULL)
-    lt_fatal ("Couldn't find %s", argv[0]);
-  LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
-			  tmp_pathspec));
-
-  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
-  LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
-			  actual_cwrapper_path));
-  XFREE (tmp_pathspec);
-
-  actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
-  strendzap (actual_cwrapper_path, actual_cwrapper_name);
-
-  /* wrapper name transforms */
-  strendzap (actual_cwrapper_name, ".exe");
-  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
-  XFREE (actual_cwrapper_name);
-  actual_cwrapper_name = tmp_pathspec;
-  tmp_pathspec = 0;
-
-  /* target_name transforms -- use actual target program name; might have lt- prefix */
-  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
-  strendzap (target_name, ".exe");
-  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
-  XFREE (target_name);
-  target_name = tmp_pathspec;
-  tmp_pathspec = 0;
-
-  LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
-			  target_name));
-EOF
-
-	    cat <<EOF
-  newargz[0] =
-    XMALLOC (char, (strlen (actual_cwrapper_path) +
-		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
-  strcpy (newargz[0], actual_cwrapper_path);
-  strcat (newargz[0], "$objdir");
-  strcat (newargz[0], "/");
-EOF
-
-	    cat <<"EOF"
-  /* stop here, and copy so we don't have to do this twice */
-  tmp_pathspec = xstrdup (newargz[0]);
-
-  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
-  strcat (newargz[0], actual_cwrapper_name);
-
-  /* DO want the lt- prefix here if it exists, so use target_name */
-  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
-  XFREE (tmp_pathspec);
-  tmp_pathspec = NULL;
-EOF
-
-	    case $host_os in
-	      mingw*)
-	    cat <<"EOF"
-  {
-    char* p;
-    while ((p = strchr (newargz[0], '\\')) != NULL)
-      {
-	*p = '/';
-      }
-    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
-      {
-	*p = '/';
-      }
-  }
-EOF
-	    ;;
-	    esac
-
-	    cat <<"EOF"
-  XFREE (target_name);
-  XFREE (actual_cwrapper_path);
-  XFREE (actual_cwrapper_name);
-
-  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
-  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
-  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
-  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
-
-  newargc=0;
-  for (i = 1; i < argc; i++)
-    {
-      if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
-        {
-          if (argv[i][env_set_opt_len] == '=')
-            {
-              const char *p = argv[i] + env_set_opt_len + 1;
-              lt_opt_process_env_set (p);
-            }
-          else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
-            {
-              lt_opt_process_env_set (argv[++i]); /* don't copy */
-            }
-          else
-            lt_fatal ("%s missing required argument", env_set_opt);
-          continue;
-        }
-      if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
-        {
-          if (argv[i][env_prepend_opt_len] == '=')
-            {
-              const char *p = argv[i] + env_prepend_opt_len + 1;
-              lt_opt_process_env_prepend (p);
-            }
-          else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
-            {
-              lt_opt_process_env_prepend (argv[++i]); /* don't copy */
-            }
-          else
-            lt_fatal ("%s missing required argument", env_prepend_opt);
-          continue;
-        }
-      if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
-        {
-          if (argv[i][env_append_opt_len] == '=')
-            {
-              const char *p = argv[i] + env_append_opt_len + 1;
-              lt_opt_process_env_append (p);
-            }
-          else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
-            {
-              lt_opt_process_env_append (argv[++i]); /* don't copy */
-            }
-          else
-            lt_fatal ("%s missing required argument", env_append_opt);
-          continue;
-        }
-      if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
-        {
-          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
-             namespace, but it is not one of the ones we know about and
-             have already dealt with, above (inluding dump-script), then
-             report an error. Otherwise, targets might begin to believe
-             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
-             namespace. The first time any user complains about this, we'll
-             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
-             or a configure.ac-settable value.
-           */
-          lt_fatal ("Unrecognized option in %s namespace: '%s'",
-                    ltwrapper_option_prefix, argv[i]);
-        }
-      /* otherwise ... */
-      newargz[++newargc] = xstrdup (argv[i]);
-    }
-  newargz[++newargc] = NULL;
-
-  LTWRAPPER_DEBUGPRINTF     (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
-  for (i = 0; i < newargc; i++)
-    {
-      LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d]   : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
-    }
-
-EOF
-
-	    case $host_os in
-	      mingw*)
-		cat <<"EOF"
-  /* execv doesn't actually work on mingw as expected on unix */
-  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
-  if (rval == -1)
-    {
-      /* failed to start process */
-      LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
-      return 127;
-    }
-  return rval;
-EOF
-		;;
-	      *)
-		cat <<"EOF"
-  execv (lt_argv_zero, newargz);
-  return rval; /* =127, but avoids unused variable warning */
-EOF
-		;;
-	    esac
-
-	    cat <<"EOF"
-}
-
-void *
-xmalloc (size_t num)
-{
-  void *p = (void *) malloc (num);
-  if (!p)
-    lt_fatal ("Memory exhausted");
-
-  return p;
-}
-
-char *
-xstrdup (const char *string)
-{
-  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
-			  string) : NULL;
-}
-
-const char *
-base_name (const char *name)
-{
-  const char *base;
-
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-  /* Skip over the disk name in MSDOS pathnames. */
-  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
-    name += 2;
-#endif
-
-  for (base = name; *name; name++)
-    if (IS_DIR_SEPARATOR (*name))
-      base = name + 1;
-  return base;
-}
-
-int
-check_executable (const char *path)
-{
-  struct stat st;
-
-  LTWRAPPER_DEBUGPRINTF (("(check_executable)  : %s\n",
-			  path ? (*path ? path : "EMPTY!") : "NULL!"));
-  if ((!path) || (!*path))
-    return 0;
-
-  if ((stat (path, &st) >= 0)
-      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
-    return 1;
-  else
-    return 0;
-}
-
-int
-make_executable (const char *path)
-{
-  int rval = 0;
-  struct stat st;
-
-  LTWRAPPER_DEBUGPRINTF (("(make_executable)   : %s\n",
-			  path ? (*path ? path : "EMPTY!") : "NULL!"));
-  if ((!path) || (!*path))
-    return 0;
-
-  if (stat (path, &st) >= 0)
-    {
-      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
-    }
-  return rval;
-}
-
-/* Searches for the full path of the wrapper.  Returns
-   newly allocated full path name if found, NULL otherwise
-   Does not chase symlinks, even on platforms that support them.
-*/
-char *
-find_executable (const char *wrapper)
-{
-  int has_slash = 0;
-  const char *p;
-  const char *p_next;
-  /* static buffer for getcwd */
-  char tmp[LT_PATHMAX + 1];
-  int tmp_len;
-  char *concat_name;
-
-  LTWRAPPER_DEBUGPRINTF (("(find_executable)   : %s\n",
-			  wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
-
-  if ((wrapper == NULL) || (*wrapper == '\0'))
-    return NULL;
-
-  /* Absolute path? */
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
-    {
-      concat_name = xstrdup (wrapper);
-      if (check_executable (concat_name))
-	return concat_name;
-      XFREE (concat_name);
-    }
-  else
-    {
-#endif
-      if (IS_DIR_SEPARATOR (wrapper[0]))
-	{
-	  concat_name = xstrdup (wrapper);
-	  if (check_executable (concat_name))
-	    return concat_name;
-	  XFREE (concat_name);
-	}
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-    }
-#endif
-
-  for (p = wrapper; *p; p++)
-    if (*p == '/')
-      {
-	has_slash = 1;
-	break;
-      }
-  if (!has_slash)
-    {
-      /* no slashes; search PATH */
-      const char *path = getenv ("PATH");
-      if (path != NULL)
-	{
-	  for (p = path; *p; p = p_next)
-	    {
-	      const char *q;
-	      size_t p_len;
-	      for (q = p; *q; q++)
-		if (IS_PATH_SEPARATOR (*q))
-		  break;
-	      p_len = q - p;
-	      p_next = (*q == '\0' ? q : q + 1);
-	      if (p_len == 0)
-		{
-		  /* empty path: current directory */
-		  if (getcwd (tmp, LT_PATHMAX) == NULL)
-		    lt_fatal ("getcwd failed");
-		  tmp_len = strlen (tmp);
-		  concat_name =
-		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
-		  memcpy (concat_name, tmp, tmp_len);
-		  concat_name[tmp_len] = '/';
-		  strcpy (concat_name + tmp_len + 1, wrapper);
-		}
-	      else
-		{
-		  concat_name =
-		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
-		  memcpy (concat_name, p, p_len);
-		  concat_name[p_len] = '/';
-		  strcpy (concat_name + p_len + 1, wrapper);
-		}
-	      if (check_executable (concat_name))
-		return concat_name;
-	      XFREE (concat_name);
-	    }
-	}
-      /* not found in PATH; assume curdir */
-    }
-  /* Relative path | not found in path: prepend cwd */
-  if (getcwd (tmp, LT_PATHMAX) == NULL)
-    lt_fatal ("getcwd failed");
-  tmp_len = strlen (tmp);
-  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
-  memcpy (concat_name, tmp, tmp_len);
-  concat_name[tmp_len] = '/';
-  strcpy (concat_name + tmp_len + 1, wrapper);
-
-  if (check_executable (concat_name))
-    return concat_name;
-  XFREE (concat_name);
-  return NULL;
-}
-
-char *
-chase_symlinks (const char *pathspec)
-{
-#ifndef S_ISLNK
-  return xstrdup (pathspec);
-#else
-  char buf[LT_PATHMAX];
-  struct stat s;
-  char *tmp_pathspec = xstrdup (pathspec);
-  char *p;
-  int has_symlinks = 0;
-  while (strlen (tmp_pathspec) && !has_symlinks)
-    {
-      LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
-			      tmp_pathspec));
-      if (lstat (tmp_pathspec, &s) == 0)
-	{
-	  if (S_ISLNK (s.st_mode) != 0)
-	    {
-	      has_symlinks = 1;
-	      break;
-	    }
-
-	  /* search backwards for last DIR_SEPARATOR */
-	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
-	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
-	    p--;
-	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
-	    {
-	      /* no more DIR_SEPARATORS left */
-	      break;
-	    }
-	  *p = '\0';
-	}
-      else
-	{
-	  char *errstr = strerror (errno);
-	  lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
-	}
-    }
-  XFREE (tmp_pathspec);
-
-  if (!has_symlinks)
-    {
-      return xstrdup (pathspec);
-    }
-
-  tmp_pathspec = realpath (pathspec, buf);
-  if (tmp_pathspec == 0)
-    {
-      lt_fatal ("Could not follow symlinks for %s", pathspec);
-    }
-  return xstrdup (tmp_pathspec);
-#endif
-}
-
-char *
-strendzap (char *str, const char *pat)
-{
-  size_t len, patlen;
-
-  assert (str != NULL);
-  assert (pat != NULL);
-
-  len = strlen (str);
-  patlen = strlen (pat);
-
-  if (patlen <= len)
-    {
-      str += len - patlen;
-      if (strcmp (str, pat) == 0)
-	*str = '\0';
-    }
-  return str;
-}
-
-static void
-lt_error_core (int exit_status, const char *mode,
-	       const char *message, va_list ap)
-{
-  fprintf (stderr, "%s: %s: ", program_name, mode);
-  vfprintf (stderr, message, ap);
-  fprintf (stderr, ".\n");
-
-  if (exit_status >= 0)
-    exit (exit_status);
-}
-
-void
-lt_fatal (const char *message, ...)
-{
-  va_list ap;
-  va_start (ap, message);
-  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
-  va_end (ap);
-}
-
-void
-lt_setenv (const char *name, const char *value)
-{
-  LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
-                          (name ? name : "<NULL>"),
-                          (value ? value : "<NULL>")));
-  {
-#ifdef HAVE_SETENV
-    /* always make a copy, for consistency with !HAVE_SETENV */
-    char *str = xstrdup (value);
-    setenv (name, str, 1);
-#else
-    int len = strlen (name) + 1 + strlen (value) + 1;
-    char *str = XMALLOC (char, len);
-    sprintf (str, "%s=%s", name, value);
-    if (putenv (str) != EXIT_SUCCESS)
-      {
-        XFREE (str);
-      }
-#endif
-  }
-}
-
-char *
-lt_extend_str (const char *orig_value, const char *add, int to_end)
-{
-  char *new_value;
-  if (orig_value && *orig_value)
-    {
-      int orig_value_len = strlen (orig_value);
-      int add_len = strlen (add);
-      new_value = XMALLOC (char, add_len + orig_value_len + 1);
-      if (to_end)
-        {
-          strcpy (new_value, orig_value);
-          strcpy (new_value + orig_value_len, add);
-        }
-      else
-        {
-          strcpy (new_value, add);
-          strcpy (new_value + add_len, orig_value);
-        }
-    }
-  else
-    {
-      new_value = xstrdup (add);
-    }
-  return new_value;
-}
-
-int
-lt_split_name_value (const char *arg, char** name, char** value)
-{
-  const char *p;
-  int len;
-  if (!arg || !*arg)
-    return 1;
-
-  p = strchr (arg, (int)'=');
-
-  if (!p)
-    return 1;
-
-  *value = xstrdup (++p);
-
-  len = strlen (arg) - strlen (*value);
-  *name = XMALLOC (char, len);
-  strncpy (*name, arg, len-1);
-  (*name)[len - 1] = '\0';
-
-  return 0;
-}
-
-void
-lt_opt_process_env_set (const char *arg)
-{
-  char *name = NULL;
-  char *value = NULL;
-
-  if (lt_split_name_value (arg, &name, &value) != 0)
-    {
-      XFREE (name);
-      XFREE (value);
-      lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
-    }
-
-  lt_setenv (name, value);
-  XFREE (name);
-  XFREE (value);
-}
-
-void
-lt_opt_process_env_prepend (const char *arg)
-{
-  char *name = NULL;
-  char *value = NULL;
-  char *new_value = NULL;
-
-  if (lt_split_name_value (arg, &name, &value) != 0)
-    {
-      XFREE (name);
-      XFREE (value);
-      lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
-    }
-
-  new_value = lt_extend_str (getenv (name), value, 0);
-  lt_setenv (name, new_value);
-  XFREE (new_value);
-  XFREE (name);
-  XFREE (value);
-}
-
-void
-lt_opt_process_env_append (const char *arg)
-{
-  char *name = NULL;
-  char *value = NULL;
-  char *new_value = NULL;
-
-  if (lt_split_name_value (arg, &name, &value) != 0)
-    {
-      XFREE (name);
-      XFREE (value);
-      lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
-    }
-
-  new_value = lt_extend_str (getenv (name), value, 1);
-  lt_setenv (name, new_value);
-  XFREE (new_value);
-  XFREE (name);
-  XFREE (value);
-}
-
-void
-lt_update_exe_path (const char *name, const char *value)
-{
-  LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
-                          (name ? name : "<NULL>"),
-                          (value ? value : "<NULL>")));
-
-  if (name && *name && value && *value)
-    {
-      char *new_value = lt_extend_str (getenv (name), value, 0);
-      /* some systems can't cope with a ':'-terminated path #' */
-      int len = strlen (new_value);
-      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
-        {
-          new_value[len-1] = '\0';
-        }
-      lt_setenv (name, new_value);
-      XFREE (new_value);
-    }
-}
-
-void
-lt_update_lib_path (const char *name, const char *value)
-{
-  LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
-                          (name ? name : "<NULL>"),
-                          (value ? value : "<NULL>")));
-
-  if (name && *name && value && *value)
-    {
-      char *new_value = lt_extend_str (getenv (name), value, 0);
-      lt_setenv (name, new_value);
-      XFREE (new_value);
-    }
-}
-
-
-EOF
-}
-# end: func_emit_cwrapperexe_src
-
-# func_mode_link arg...
-func_mode_link ()
-{
-    $opt_debug
-    case $host in
-    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-      # It is impossible to link a dll without this setting, and
-      # we shouldn't force the makefile maintainer to figure out
-      # which system we are compiling for in order to pass an extra
-      # flag for every libtool invocation.
-      # allow_undefined=no
-
-      # FIXME: Unfortunately, there are problems with the above when trying
-      # to make a dll which has undefined symbols, in which case not
-      # even a static library is built.  For now, we need to specify
-      # -no-undefined on the libtool link line when we can be certain
-      # that all symbols are satisfied, otherwise we get a static library.
-      allow_undefined=yes
-      ;;
-    *)
-      allow_undefined=yes
-      ;;
-    esac
-    libtool_args=$nonopt
-    base_compile="$nonopt $@"
-    compile_command=$nonopt
-    finalize_command=$nonopt
-
-    compile_rpath=
-    finalize_rpath=
-    compile_shlibpath=
-    finalize_shlibpath=
-    convenience=
-    old_convenience=
-    deplibs=
-    old_deplibs=
-    compiler_flags=
-    linker_flags=
-    dllsearchpath=
-    lib_search_path=`pwd`
-    inst_prefix_dir=
-    new_inherited_linker_flags=
-
-    avoid_version=no
-    dlfiles=
-    dlprefiles=
-    dlself=no
-    export_dynamic=no
-    export_symbols=
-    export_symbols_regex=
-    generated=
-    libobjs=
-    ltlibs=
-    module=no
-    no_install=no
-    objs=
-    non_pic_objects=
-    precious_files_regex=
-    prefer_static_libs=no
-    preload=no
-    prev=
-    prevarg=
-    release=
-    rpath=
-    xrpath=
-    perm_rpath=
-    temp_rpath=
-    thread_safe=no
-    vinfo=
-    vinfo_number=no
-    weak_libs=
-    single_module="${wl}-single_module"
-    func_infer_tag $base_compile
-
-    # We need to know -static, to get the right output filenames.
-    for arg
-    do
-      case $arg in
-      -shared)
-	test "$build_libtool_libs" != yes && \
-	  func_fatal_configuration "can not build a shared library"
-	build_old_libs=no
-	break
-	;;
-      -all-static | -static | -static-libtool-libs)
-	case $arg in
-	-all-static)
-	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
-	    func_warning "complete static linking is impossible in this configuration"
-	  fi
-	  if test -n "$link_static_flag"; then
-	    dlopen_self=$dlopen_self_static
-	  fi
-	  prefer_static_libs=yes
-	  ;;
-	-static)
-	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
-	    dlopen_self=$dlopen_self_static
-	  fi
-	  prefer_static_libs=built
-	  ;;
-	-static-libtool-libs)
-	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
-	    dlopen_self=$dlopen_self_static
-	  fi
-	  prefer_static_libs=yes
-	  ;;
-	esac
-	build_libtool_libs=no
-	build_old_libs=yes
-	break
-	;;
-      esac
-    done
-
-    # See if our shared archives depend on static archives.
-    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
-
-    # Go through the arguments, transforming them on the way.
-    while test "$#" -gt 0; do
-      arg="$1"
-      shift
-      func_quote_for_eval "$arg"
-      qarg=$func_quote_for_eval_unquoted_result
-      func_append libtool_args " $func_quote_for_eval_result"
-
-      # If the previous option needs an argument, assign it.
-      if test -n "$prev"; then
-	case $prev in
-	output)
-	  func_append compile_command " @OUTPUT@"
-	  func_append finalize_command " @OUTPUT@"
-	  ;;
-	esac
-
-	case $prev in
-	dlfiles|dlprefiles)
-	  if test "$preload" = no; then
-	    # Add the symbol object into the linking commands.
-	    func_append compile_command " @SYMFILE@"
-	    func_append finalize_command " @SYMFILE@"
-	    preload=yes
-	  fi
-	  case $arg in
-	  *.la | *.lo) ;;  # We handle these cases below.
-	  force)
-	    if test "$dlself" = no; then
-	      dlself=needless
-	      export_dynamic=yes
-	    fi
-	    prev=
-	    continue
-	    ;;
-	  self)
-	    if test "$prev" = dlprefiles; then
-	      dlself=yes
-	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
-	      dlself=yes
-	    else
-	      dlself=needless
-	      export_dynamic=yes
-	    fi
-	    prev=
-	    continue
-	    ;;
-	  *)
-	    if test "$prev" = dlfiles; then
-	      dlfiles="$dlfiles $arg"
-	    else
-	      dlprefiles="$dlprefiles $arg"
-	    fi
-	    prev=
-	    continue
-	    ;;
-	  esac
-	  ;;
-	expsyms)
-	  export_symbols="$arg"
-	  test -f "$arg" \
-	    || func_fatal_error "symbol file \`$arg' does not exist"
-	  prev=
-	  continue
-	  ;;
-	expsyms_regex)
-	  export_symbols_regex="$arg"
-	  prev=
-	  continue
-	  ;;
-	framework)
-	  case $host in
-	    *-*-darwin*)
-	      case "$deplibs " in
-		*" $qarg.ltframework "*) ;;
-		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
-		   ;;
-	      esac
-	      ;;
-	  esac
-	  prev=
-	  continue
-	  ;;
-	inst_prefix)
-	  inst_prefix_dir="$arg"
-	  prev=
-	  continue
-	  ;;
-	objectlist)
-	  if test -f "$arg"; then
-	    save_arg=$arg
-	    moreargs=
-	    for fil in `cat "$save_arg"`
-	    do
-#	      moreargs="$moreargs $fil"
-	      arg=$fil
-	      # A libtool-controlled object.
-
-	      # Check to see that this really is a libtool object.
-	      if func_lalib_unsafe_p "$arg"; then
-		pic_object=
-		non_pic_object=
-
-		# Read the .lo file
-		func_source "$arg"
-
-		if test -z "$pic_object" ||
-		   test -z "$non_pic_object" ||
-		   test "$pic_object" = none &&
-		   test "$non_pic_object" = none; then
-		  func_fatal_error "cannot find name of object for \`$arg'"
-		fi
-
-		# Extract subdirectory from the argument.
-		func_dirname "$arg" "/" ""
-		xdir="$func_dirname_result"
-
-		if test "$pic_object" != none; then
-		  # Prepend the subdirectory the object is found in.
-		  pic_object="$xdir$pic_object"
-
-		  if test "$prev" = dlfiles; then
-		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
-		      dlfiles="$dlfiles $pic_object"
-		      prev=
-		      continue
-		    else
-		      # If libtool objects are unsupported, then we need to preload.
-		      prev=dlprefiles
-		    fi
-		  fi
-
-		  # CHECK ME:  I think I busted this.  -Ossama
-		  if test "$prev" = dlprefiles; then
-		    # Preload the old-style object.
-		    dlprefiles="$dlprefiles $pic_object"
-		    prev=
-		  fi
-
-		  # A PIC object.
-		  func_append libobjs " $pic_object"
-		  arg="$pic_object"
-		fi
-
-		# Non-PIC object.
-		if test "$non_pic_object" != none; then
-		  # Prepend the subdirectory the object is found in.
-		  non_pic_object="$xdir$non_pic_object"
-
-		  # A standard non-PIC object
-		  func_append non_pic_objects " $non_pic_object"
-		  if test -z "$pic_object" || test "$pic_object" = none ; then
-		    arg="$non_pic_object"
-		  fi
-		else
-		  # If the PIC object exists, use it instead.
-		  # $xdir was prepended to $pic_object above.
-		  non_pic_object="$pic_object"
-		  func_append non_pic_objects " $non_pic_object"
-		fi
-	      else
-		# Only an error if not doing a dry-run.
-		if $opt_dry_run; then
-		  # Extract subdirectory from the argument.
-		  func_dirname "$arg" "/" ""
-		  xdir="$func_dirname_result"
-
-		  func_lo2o "$arg"
-		  pic_object=$xdir$objdir/$func_lo2o_result
-		  non_pic_object=$xdir$func_lo2o_result
-		  func_append libobjs " $pic_object"
-		  func_append non_pic_objects " $non_pic_object"
-	        else
-		  func_fatal_error "\`$arg' is not a valid libtool object"
-		fi
-	      fi
-	    done
-	  else
-	    func_fatal_error "link input file \`$arg' does not exist"
-	  fi
-	  arg=$save_arg
-	  prev=
-	  continue
-	  ;;
-	precious_regex)
-	  precious_files_regex="$arg"
-	  prev=
-	  continue
-	  ;;
-	release)
-	  release="-$arg"
-	  prev=
-	  continue
-	  ;;
-	rpath | xrpath)
-	  # We need an absolute path.
-	  case $arg in
-	  [\\/]* | [A-Za-z]:[\\/]*) ;;
-	  *)
-	    func_fatal_error "only absolute run-paths are allowed"
-	    ;;
-	  esac
-	  if test "$prev" = rpath; then
-	    case "$rpath " in
-	    *" $arg "*) ;;
-	    *) rpath="$rpath $arg" ;;
-	    esac
-	  else
-	    case "$xrpath " in
-	    *" $arg "*) ;;
-	    *) xrpath="$xrpath $arg" ;;
-	    esac
-	  fi
-	  prev=
-	  continue
-	  ;;
-	shrext)
-	  shrext_cmds="$arg"
-	  prev=
-	  continue
-	  ;;
-	weak)
-	  weak_libs="$weak_libs $arg"
-	  prev=
-	  continue
-	  ;;
-	xcclinker)
-	  linker_flags="$linker_flags $qarg"
-	  compiler_flags="$compiler_flags $qarg"
-	  prev=
-	  func_append compile_command " $qarg"
-	  func_append finalize_command " $qarg"
-	  continue
-	  ;;
-	xcompiler)
-	  compiler_flags="$compiler_flags $qarg"
-	  prev=
-	  func_append compile_command " $qarg"
-	  func_append finalize_command " $qarg"
-	  continue
-	  ;;
-	xlinker)
-	  linker_flags="$linker_flags $qarg"
-	  compiler_flags="$compiler_flags $wl$qarg"
-	  prev=
-	  func_append compile_command " $wl$qarg"
-	  func_append finalize_command " $wl$qarg"
-	  continue
-	  ;;
-	*)
-	  eval "$prev=\"\$arg\""
-	  prev=
-	  continue
-	  ;;
-	esac
-      fi # test -n "$prev"
-
-      prevarg="$arg"
-
-      case $arg in
-      -all-static)
-	if test -n "$link_static_flag"; then
-	  # See comment for -static flag below, for more details.
-	  func_append compile_command " $link_static_flag"
-	  func_append finalize_command " $link_static_flag"
-	fi
-	continue
-	;;
-
-      -allow-undefined)
-	# FIXME: remove this flag sometime in the future.
-	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
-	;;
-
-      -avoid-version)
-	avoid_version=yes
-	continue
-	;;
-
-      -dlopen)
-	prev=dlfiles
-	continue
-	;;
-
-      -dlpreopen)
-	prev=dlprefiles
-	continue
-	;;
-
-      -export-dynamic)
-	export_dynamic=yes
-	continue
-	;;
-
-      -export-symbols | -export-symbols-regex)
-	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
-	  func_fatal_error "more than one -exported-symbols argument is not allowed"
-	fi
-	if test "X$arg" = "X-export-symbols"; then
-	  prev=expsyms
-	else
-	  prev=expsyms_regex
-	fi
-	continue
-	;;
-
-      -framework)
-	prev=framework
-	continue
-	;;
-
-      -inst-prefix-dir)
-	prev=inst_prefix
-	continue
-	;;
-
-      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
-      # so, if we see these flags be careful not to treat them like -L
-      -L[A-Z][A-Z]*:*)
-	case $with_gcc/$host in
-	no/*-*-irix* | /*-*-irix*)
-	  func_append compile_command " $arg"
-	  func_append finalize_command " $arg"
-	  ;;
-	esac
-	continue
-	;;
-
-      -L*)
-	func_stripname '-L' '' "$arg"
-	dir=$func_stripname_result
-	if test -z "$dir"; then
-	  if test "$#" -gt 0; then
-	    func_fatal_error "require no space between \`-L' and \`$1'"
-	  else
-	    func_fatal_error "need path for \`-L' option"
-	  fi
-	fi
-	# We need an absolute path.
-	case $dir in
-	[\\/]* | [A-Za-z]:[\\/]*) ;;
-	*)
-	  absdir=`cd "$dir" && pwd`
-	  test -z "$absdir" && \
-	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
-	  dir="$absdir"
-	  ;;
-	esac
-	case "$deplibs " in
-	*" -L$dir "*) ;;
-	*)
-	  deplibs="$deplibs -L$dir"
-	  lib_search_path="$lib_search_path $dir"
-	  ;;
-	esac
-	case $host in
-	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-	  testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
-	  case :$dllsearchpath: in
-	  *":$dir:"*) ;;
-	  ::) dllsearchpath=$dir;;
-	  *) dllsearchpath="$dllsearchpath:$dir";;
-	  esac
-	  case :$dllsearchpath: in
-	  *":$testbindir:"*) ;;
-	  ::) dllsearchpath=$testbindir;;
-	  *) dllsearchpath="$dllsearchpath:$testbindir";;
-	  esac
-	  ;;
-	esac
-	continue
-	;;
-
-      -l*)
-	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
-	  case $host in
-	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
-	    # These systems don't actually have a C or math library (as such)
-	    continue
-	    ;;
-	  *-*-os2*)
-	    # These systems don't actually have a C library (as such)
-	    test "X$arg" = "X-lc" && continue
-	    ;;
-	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
-	    # Do not include libc due to us having libc/libc_r.
-	    test "X$arg" = "X-lc" && continue
-	    ;;
-	  *-*-rhapsody* | *-*-darwin1.[012])
-	    # Rhapsody C and math libraries are in the System framework
-	    deplibs="$deplibs System.ltframework"
-	    continue
-	    ;;
-	  *-*-sco3.2v5* | *-*-sco5v6*)
-	    # Causes problems with __ctype
-	    test "X$arg" = "X-lc" && continue
-	    ;;
-	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
-	    # Compiler inserts libc in the correct place for threads to work
-	    test "X$arg" = "X-lc" && continue
-	    ;;
-	  esac
-	elif test "X$arg" = "X-lc_r"; then
-	 case $host in
-	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
-	   # Do not include libc_r directly, use -pthread flag.
-	   continue
-	   ;;
-	 esac
-	fi
-	deplibs="$deplibs $arg"
-	continue
-	;;
-
-      -module)
-	module=yes
-	continue
-	;;
-
-      # Tru64 UNIX uses -model [arg] to determine the layout of C++
-      # classes, name mangling, and exception handling.
-      # Darwin uses the -arch flag to determine output architecture.
-      -model|-arch|-isysroot)
-	compiler_flags="$compiler_flags $arg"
-	func_append compile_command " $arg"
-	func_append finalize_command " $arg"
-	prev=xcompiler
-	continue
-	;;
-
-      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
-	compiler_flags="$compiler_flags $arg"
-	func_append compile_command " $arg"
-	func_append finalize_command " $arg"
-	case "$new_inherited_linker_flags " in
-	    *" $arg "*) ;;
-	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
-	esac
-	continue
-	;;
-
-      -multi_module)
-	single_module="${wl}-multi_module"
-	continue
-	;;
-
-      -no-fast-install)
-	fast_install=no
-	continue
-	;;
-
-      -no-install)
-	case $host in
-	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
-	  # The PATH hackery in wrapper scripts is required on Windows
-	  # and Darwin in order for the loader to find any dlls it needs.
-	  func_warning "\`-no-install' is ignored for $host"
-	  func_warning "assuming \`-no-fast-install' instead"
-	  fast_install=no
-	  ;;
-	*) no_install=yes ;;
-	esac
-	continue
-	;;
-
-      -no-undefined)
-	allow_undefined=no
-	continue
-	;;
-
-      -objectlist)
-	prev=objectlist
-	continue
-	;;
-
-      -o) prev=output ;;
-
-      -precious-files-regex)
-	prev=precious_regex
-	continue
-	;;
-
-      -release)
-	prev=release
-	continue
-	;;
-
-      -rpath)
-	prev=rpath
-	continue
-	;;
-
-      -R)
-	prev=xrpath
-	continue
-	;;
-
-      -R*)
-	func_stripname '-R' '' "$arg"
-	dir=$func_stripname_result
-	# We need an absolute path.
-	case $dir in
-	[\\/]* | [A-Za-z]:[\\/]*) ;;
-	*)
-	  func_fatal_error "only absolute run-paths are allowed"
-	  ;;
-	esac
-	case "$xrpath " in
-	*" $dir "*) ;;
-	*) xrpath="$xrpath $dir" ;;
-	esac
-	continue
-	;;
-
-      -shared)
-	# The effects of -shared are defined in a previous loop.
-	continue
-	;;
-
-      -shrext)
-	prev=shrext
-	continue
-	;;
-
-      -static | -static-libtool-libs)
-	# The effects of -static are defined in a previous loop.
-	# We used to do the same as -all-static on platforms that
-	# didn't have a PIC flag, but the assumption that the effects
-	# would be equivalent was wrong.  It would break on at least
-	# Digital Unix and AIX.
-	continue
-	;;
-
-      -thread-safe)
-	thread_safe=yes
-	continue
-	;;
-
-      -version-info)
-	prev=vinfo
-	continue
-	;;
-
-      -version-number)
-	prev=vinfo
-	vinfo_number=yes
-	continue
-	;;
-
-      -weak)
-        prev=weak
-	continue
-	;;
-
-      -Wc,*)
-	func_stripname '-Wc,' '' "$arg"
-	args=$func_stripname_result
-	arg=
-	save_ifs="$IFS"; IFS=','
-	for flag in $args; do
-	  IFS="$save_ifs"
-          func_quote_for_eval "$flag"
-	  arg="$arg $wl$func_quote_for_eval_result"
-	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
-	done
-	IFS="$save_ifs"
-	func_stripname ' ' '' "$arg"
-	arg=$func_stripname_result
-	;;
-
-      -Wl,*)
-	func_stripname '-Wl,' '' "$arg"
-	args=$func_stripname_result
-	arg=
-	save_ifs="$IFS"; IFS=','
-	for flag in $args; do
-	  IFS="$save_ifs"
-          func_quote_for_eval "$flag"
-	  arg="$arg $wl$func_quote_for_eval_result"
-	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
-	  linker_flags="$linker_flags $func_quote_for_eval_result"
-	done
-	IFS="$save_ifs"
-	func_stripname ' ' '' "$arg"
-	arg=$func_stripname_result
-	;;
-
-      -Xcompiler)
-	prev=xcompiler
-	continue
-	;;
-
-      -Xlinker)
-	prev=xlinker
-	continue
-	;;
-
-      -XCClinker)
-	prev=xcclinker
-	continue
-	;;
-
-      # -msg_* for osf cc
-      -msg_*)
-	func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
-	;;
-
-      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
-      # -r[0-9][0-9]* specifies the processor on the SGI compiler
-      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
-      # +DA*, +DD* enable 64-bit mode on the HP compiler
-      # -q* pass through compiler args for the IBM compiler
-      # -m*, -t[45]*, -txscale* pass through architecture-specific
-      # compiler args for GCC
-      # -F/path gives path to uninstalled frameworks, gcc on darwin
-      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
-      # @file GCC response files
-      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
-        func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
-        func_append compile_command " $arg"
-        func_append finalize_command " $arg"
-        compiler_flags="$compiler_flags $arg"
-        continue
-        ;;
-
-      # Some other compiler flag.
-      -* | +*)
-        func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
-	;;
-
-      *.$objext)
-	# A standard object.
-	objs="$objs $arg"
-	;;
-
-      *.lo)
-	# A libtool-controlled object.
-
-	# Check to see that this really is a libtool object.
-	if func_lalib_unsafe_p "$arg"; then
-	  pic_object=
-	  non_pic_object=
-
-	  # Read the .lo file
-	  func_source "$arg"
-
-	  if test -z "$pic_object" ||
-	     test -z "$non_pic_object" ||
-	     test "$pic_object" = none &&
-	     test "$non_pic_object" = none; then
-	    func_fatal_error "cannot find name of object for \`$arg'"
-	  fi
-
-	  # Extract subdirectory from the argument.
-	  func_dirname "$arg" "/" ""
-	  xdir="$func_dirname_result"
-
-	  if test "$pic_object" != none; then
-	    # Prepend the subdirectory the object is found in.
-	    pic_object="$xdir$pic_object"
-
-	    if test "$prev" = dlfiles; then
-	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
-		dlfiles="$dlfiles $pic_object"
-		prev=
-		continue
-	      else
-		# If libtool objects are unsupported, then we need to preload.
-		prev=dlprefiles
-	      fi
-	    fi
-
-	    # CHECK ME:  I think I busted this.  -Ossama
-	    if test "$prev" = dlprefiles; then
-	      # Preload the old-style object.
-	      dlprefiles="$dlprefiles $pic_object"
-	      prev=
-	    fi
-
-	    # A PIC object.
-	    func_append libobjs " $pic_object"
-	    arg="$pic_object"
-	  fi
-
-	  # Non-PIC object.
-	  if test "$non_pic_object" != none; then
-	    # Prepend the subdirectory the object is found in.
-	    non_pic_object="$xdir$non_pic_object"
-
-	    # A standard non-PIC object
-	    func_append non_pic_objects " $non_pic_object"
-	    if test -z "$pic_object" || test "$pic_object" = none ; then
-	      arg="$non_pic_object"
-	    fi
-	  else
-	    # If the PIC object exists, use it instead.
-	    # $xdir was prepended to $pic_object above.
-	    non_pic_object="$pic_object"
-	    func_append non_pic_objects " $non_pic_object"
-	  fi
-	else
-	  # Only an error if not doing a dry-run.
-	  if $opt_dry_run; then
-	    # Extract subdirectory from the argument.
-	    func_dirname "$arg" "/" ""
-	    xdir="$func_dirname_result"
-
-	    func_lo2o "$arg"
-	    pic_object=$xdir$objdir/$func_lo2o_result
-	    non_pic_object=$xdir$func_lo2o_result
-	    func_append libobjs " $pic_object"
-	    func_append non_pic_objects " $non_pic_object"
-	  else
-	    func_fatal_error "\`$arg' is not a valid libtool object"
-	  fi
-	fi
-	;;
-
-      *.$libext)
-	# An archive.
-	deplibs="$deplibs $arg"
-	old_deplibs="$old_deplibs $arg"
-	continue
-	;;
-
-      *.la)
-	# A libtool-controlled library.
-
-	if test "$prev" = dlfiles; then
-	  # This library was specified with -dlopen.
-	  dlfiles="$dlfiles $arg"
-	  prev=
-	elif test "$prev" = dlprefiles; then
-	  # The library was specified with -dlpreopen.
-	  dlprefiles="$dlprefiles $arg"
-	  prev=
-	else
-	  deplibs="$deplibs $arg"
-	fi
-	continue
-	;;
-
-      # Some other compiler argument.
-      *)
-	# Unknown arguments in both finalize_command and compile_command need
-	# to be aesthetically quoted because they are evaled later.
-	func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
-	;;
-      esac # arg
-
-      # Now actually substitute the argument into the commands.
-      if test -n "$arg"; then
-	func_append compile_command " $arg"
-	func_append finalize_command " $arg"
-      fi
-    done # argument parsing loop
-
-    test -n "$prev" && \
-      func_fatal_help "the \`$prevarg' option requires an argument"
-
-    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
-      eval arg=\"$export_dynamic_flag_spec\"
-      func_append compile_command " $arg"
-      func_append finalize_command " $arg"
-    fi
-
-    oldlibs=
-    # calculate the name of the file, without its directory
-    func_basename "$output"
-    outputname="$func_basename_result"
-    libobjs_save="$libobjs"
-
-    if test -n "$shlibpath_var"; then
-      # get the directories listed in $shlibpath_var
-      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
-    else
-      shlib_search_path=
-    fi
-    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
-    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
-
-    func_dirname "$output" "/" ""
-    output_objdir="$func_dirname_result$objdir"
-    # Create the object directory.
-    func_mkdir_p "$output_objdir"
-
-    # Determine the type of output
-    case $output in
-    "")
-      func_fatal_help "you must specify an output file"
-      ;;
-    *.$libext) linkmode=oldlib ;;
-    *.lo | *.$objext) linkmode=obj ;;
-    *.la) linkmode=lib ;;
-    *) linkmode=prog ;; # Anything else should be a program.
-    esac
-
-    specialdeplibs=
-
-    libs=
-    # Find all interdependent deplibs by searching for libraries
-    # that are linked more than once (e.g. -la -lb -la)
-    for deplib in $deplibs; do
-      if $opt_duplicate_deps ; then
-	case "$libs " in
-	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-	esac
-      fi
-      libs="$libs $deplib"
-    done
-
-    if test "$linkmode" = lib; then
-      libs="$predeps $libs $compiler_lib_search_path $postdeps"
-
-      # Compute libraries that are listed more than once in $predeps
-      # $postdeps and mark them as special (i.e., whose duplicates are
-      # not to be eliminated).
-      pre_post_deps=
-      if $opt_duplicate_compiler_generated_deps; then
-	for pre_post_dep in $predeps $postdeps; do
-	  case "$pre_post_deps " in
-	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
-	  esac
-	  pre_post_deps="$pre_post_deps $pre_post_dep"
-	done
-      fi
-      pre_post_deps=
-    fi
-
-    deplibs=
-    newdependency_libs=
-    newlib_search_path=
-    need_relink=no # whether we're linking any uninstalled libtool libraries
-    notinst_deplibs= # not-installed libtool libraries
-    notinst_path= # paths that contain not-installed libtool libraries
-
-    case $linkmode in
-    lib)
-	passes="conv dlpreopen link"
-	for file in $dlfiles $dlprefiles; do
-	  case $file in
-	  *.la) ;;
-	  *)
-	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
-	    ;;
-	  esac
-	done
-	;;
-    prog)
-	compile_deplibs=
-	finalize_deplibs=
-	alldeplibs=no
-	newdlfiles=
-	newdlprefiles=
-	passes="conv scan dlopen dlpreopen link"
-	;;
-    *)  passes="conv"
-	;;
-    esac
-
-    for pass in $passes; do
-      # The preopen pass in lib mode reverses $deplibs; put it back here
-      # so that -L comes before libs that need it for instance...
-      if test "$linkmode,$pass" = "lib,link"; then
-	## FIXME: Find the place where the list is rebuilt in the wrong
-	##        order, and fix it there properly
-        tmp_deplibs=
-	for deplib in $deplibs; do
-	  tmp_deplibs="$deplib $tmp_deplibs"
-	done
-	deplibs="$tmp_deplibs"
-      fi
-
-      if test "$linkmode,$pass" = "lib,link" ||
-	 test "$linkmode,$pass" = "prog,scan"; then
-	libs="$deplibs"
-	deplibs=
-      fi
-      if test "$linkmode" = prog; then
-	case $pass in
-	dlopen) libs="$dlfiles" ;;
-	dlpreopen) libs="$dlprefiles" ;;
-	link)
-	  libs="$deplibs %DEPLIBS%"
-	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
-	  ;;
-	esac
-      fi
-      if test "$linkmode,$pass" = "lib,dlpreopen"; then
-	# Collect and forward deplibs of preopened libtool libs
-	for lib in $dlprefiles; do
-	  # Ignore non-libtool-libs
-	  dependency_libs=
-	  case $lib in
-	  *.la)	func_source "$lib" ;;
-	  esac
-
-	  # Collect preopened libtool deplibs, except any this library
-	  # has declared as weak libs
-	  for deplib in $dependency_libs; do
-            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
-	    case " $weak_libs " in
-	    *" $deplib_base "*) ;;
-	    *) deplibs="$deplibs $deplib" ;;
-	    esac
-	  done
-	done
-	libs="$dlprefiles"
-      fi
-      if test "$pass" = dlopen; then
-	# Collect dlpreopened libraries
-	save_deplibs="$deplibs"
-	deplibs=
-      fi
-
-      for deplib in $libs; do
-	lib=
-	found=no
-	case $deplib in
-	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
-	  if test "$linkmode,$pass" = "prog,link"; then
-	    compile_deplibs="$deplib $compile_deplibs"
-	    finalize_deplibs="$deplib $finalize_deplibs"
-	  else
-	    compiler_flags="$compiler_flags $deplib"
-	    if test "$linkmode" = lib ; then
-		case "$new_inherited_linker_flags " in
-		    *" $deplib "*) ;;
-		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
-		esac
-	    fi
-	  fi
-	  continue
-	  ;;
-	-l*)
-	  if test "$linkmode" != lib && test "$linkmode" != prog; then
-	    func_warning "\`-l' is ignored for archives/objects"
-	    continue
-	  fi
-	  func_stripname '-l' '' "$deplib"
-	  name=$func_stripname_result
-	  if test "$linkmode" = lib; then
-	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
-	  else
-	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
-	  fi
-	  for searchdir in $searchdirs; do
-	    for search_ext in .la $std_shrext .so .a; do
-	      # Search the libtool library
-	      lib="$searchdir/lib${name}${search_ext}"
-	      if test -f "$lib"; then
-		if test "$search_ext" = ".la"; then
-		  found=yes
-		else
-		  found=no
-		fi
-		break 2
-	      fi
-	    done
-	  done
-	  if test "$found" != yes; then
-	    # deplib doesn't seem to be a libtool library
-	    if test "$linkmode,$pass" = "prog,link"; then
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    else
-	      deplibs="$deplib $deplibs"
-	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
-	    fi
-	    continue
-	  else # deplib is a libtool library
-	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
-	    # We need to do some special things here, and not later.
-	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-	      case " $predeps $postdeps " in
-	      *" $deplib "*)
-		if func_lalib_p "$lib"; then
-		  library_names=
-		  old_library=
-		  func_source "$lib"
-		  for l in $old_library $library_names; do
-		    ll="$l"
-		  done
-		  if test "X$ll" = "X$old_library" ; then # only static version available
-		    found=no
-		    func_dirname "$lib" "" "."
-		    ladir="$func_dirname_result"
-		    lib=$ladir/$old_library
-		    if test "$linkmode,$pass" = "prog,link"; then
-		      compile_deplibs="$deplib $compile_deplibs"
-		      finalize_deplibs="$deplib $finalize_deplibs"
-		    else
-		      deplibs="$deplib $deplibs"
-		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
-		    fi
-		    continue
-		  fi
-		fi
-		;;
-	      *) ;;
-	      esac
-	    fi
-	  fi
-	  ;; # -l
-	*.ltframework)
-	  if test "$linkmode,$pass" = "prog,link"; then
-	    compile_deplibs="$deplib $compile_deplibs"
-	    finalize_deplibs="$deplib $finalize_deplibs"
-	  else
-	    deplibs="$deplib $deplibs"
-	    if test "$linkmode" = lib ; then
-		case "$new_inherited_linker_flags " in
-		    *" $deplib "*) ;;
-		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
-		esac
-	    fi
-	  fi
-	  continue
-	  ;;
-	-L*)
-	  case $linkmode in
-	  lib)
-	    deplibs="$deplib $deplibs"
-	    test "$pass" = conv && continue
-	    newdependency_libs="$deplib $newdependency_libs"
-	    func_stripname '-L' '' "$deplib"
-	    newlib_search_path="$newlib_search_path $func_stripname_result"
-	    ;;
-	  prog)
-	    if test "$pass" = conv; then
-	      deplibs="$deplib $deplibs"
-	      continue
-	    fi
-	    if test "$pass" = scan; then
-	      deplibs="$deplib $deplibs"
-	    else
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    fi
-	    func_stripname '-L' '' "$deplib"
-	    newlib_search_path="$newlib_search_path $func_stripname_result"
-	    ;;
-	  *)
-	    func_warning "\`-L' is ignored for archives/objects"
-	    ;;
-	  esac # linkmode
-	  continue
-	  ;; # -L
-	-R*)
-	  if test "$pass" = link; then
-	    func_stripname '-R' '' "$deplib"
-	    dir=$func_stripname_result
-	    # Make sure the xrpath contains only unique directories.
-	    case "$xrpath " in
-	    *" $dir "*) ;;
-	    *) xrpath="$xrpath $dir" ;;
-	    esac
-	  fi
-	  deplibs="$deplib $deplibs"
-	  continue
-	  ;;
-	*.la) lib="$deplib" ;;
-	*.$libext)
-	  if test "$pass" = conv; then
-	    deplibs="$deplib $deplibs"
-	    continue
-	  fi
-	  case $linkmode in
-	  lib)
-	    # Linking convenience modules into shared libraries is allowed,
-	    # but linking other static libraries is non-portable.
-	    case " $dlpreconveniencelibs " in
-	    *" $deplib "*) ;;
-	    *)
-	      valid_a_lib=no
-	      case $deplibs_check_method in
-		match_pattern*)
-		  set dummy $deplibs_check_method; shift
-		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-		  if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
-		    | $EGREP "$match_pattern_regex" > /dev/null; then
-		    valid_a_lib=yes
-		  fi
-		;;
-		pass_all)
-		  valid_a_lib=yes
-		;;
-	      esac
-	      if test "$valid_a_lib" != yes; then
-		$ECHO
-		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
-		$ECHO "*** I have the capability to make that library automatically link in when"
-		$ECHO "*** you link to this library.  But I can only do this if you have a"
-		$ECHO "*** shared version of the library, which you do not appear to have"
-		$ECHO "*** because the file extensions .$libext of this argument makes me believe"
-		$ECHO "*** that it is just a static archive that I should not use here."
-	      else
-		$ECHO
-		$ECHO "*** Warning: Linking the shared library $output against the"
-		$ECHO "*** static library $deplib is not portable!"
-		deplibs="$deplib $deplibs"
-	      fi
-	      ;;
-	    esac
-	    continue
-	    ;;
-	  prog)
-	    if test "$pass" != link; then
-	      deplibs="$deplib $deplibs"
-	    else
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    fi
-	    continue
-	    ;;
-	  esac # linkmode
-	  ;; # *.$libext
-	*.lo | *.$objext)
-	  if test "$pass" = conv; then
-	    deplibs="$deplib $deplibs"
-	  elif test "$linkmode" = prog; then
-	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
-	      # If there is no dlopen support or we're linking statically,
-	      # we need to preload.
-	      newdlprefiles="$newdlprefiles $deplib"
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    else
-	      newdlfiles="$newdlfiles $deplib"
-	    fi
-	  fi
-	  continue
-	  ;;
-	%DEPLIBS%)
-	  alldeplibs=yes
-	  continue
-	  ;;
-	esac # case $deplib
-
-	if test "$found" = yes || test -f "$lib"; then :
-	else
-	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
-	fi
-
-	# Check to see that this really is a libtool archive.
-	func_lalib_unsafe_p "$lib" \
-	  || func_fatal_error "\`$lib' is not a valid libtool archive"
-
-	func_dirname "$lib" "" "."
-	ladir="$func_dirname_result"
-
-	dlname=
-	dlopen=
-	dlpreopen=
-	libdir=
-	library_names=
-	old_library=
-	inherited_linker_flags=
-	# If the library was installed with an old release of libtool,
-	# it will not redefine variables installed, or shouldnotlink
-	installed=yes
-	shouldnotlink=no
-	avoidtemprpath=
-
-
-	# Read the .la file
-	func_source "$lib"
-
-	# Convert "-framework foo" to "foo.ltframework"
-	if test -n "$inherited_linker_flags"; then
-	  tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
-	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
-	    case " $new_inherited_linker_flags " in
-	      *" $tmp_inherited_linker_flag "*) ;;
-	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
-	    esac
-	  done
-	fi
-	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	if test "$linkmode,$pass" = "lib,link" ||
-	   test "$linkmode,$pass" = "prog,scan" ||
-	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
-	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
-	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
-	fi
-
-	if test "$pass" = conv; then
-	  # Only check for convenience libraries
-	  deplibs="$lib $deplibs"
-	  if test -z "$libdir"; then
-	    if test -z "$old_library"; then
-	      func_fatal_error "cannot find name of link library for \`$lib'"
-	    fi
-	    # It is a libtool convenience library, so add in its objects.
-	    convenience="$convenience $ladir/$objdir/$old_library"
-	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
-	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
-	    func_fatal_error "\`$lib' is not a convenience library"
-	  fi
-	  tmp_libs=
-	  for deplib in $dependency_libs; do
-	    deplibs="$deplib $deplibs"
-	    if $opt_duplicate_deps ; then
-	      case "$tmp_libs " in
-	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-	      esac
-	    fi
-	    tmp_libs="$tmp_libs $deplib"
-	  done
-	  continue
-	fi # $pass = conv
-
-
-	# Get the name of the library we link against.
-	linklib=
-	for l in $old_library $library_names; do
-	  linklib="$l"
-	done
-	if test -z "$linklib"; then
-	  func_fatal_error "cannot find name of link library for \`$lib'"
-	fi
-
-	# This library was specified with -dlopen.
-	if test "$pass" = dlopen; then
-	  if test -z "$libdir"; then
-	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
-	  fi
-	  if test -z "$dlname" ||
-	     test "$dlopen_support" != yes ||
-	     test "$build_libtool_libs" = no; then
-	    # If there is no dlname, no dlopen support or we're linking
-	    # statically, we need to preload.  We also need to preload any
-	    # dependent libraries so libltdl's deplib preloader doesn't
-	    # bomb out in the load deplibs phase.
-	    dlprefiles="$dlprefiles $lib $dependency_libs"
-	  else
-	    newdlfiles="$newdlfiles $lib"
-	  fi
-	  continue
-	fi # $pass = dlopen
-
-	# We need an absolute path.
-	case $ladir in
-	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
-	*)
-	  abs_ladir=`cd "$ladir" && pwd`
-	  if test -z "$abs_ladir"; then
-	    func_warning "cannot determine absolute directory name of \`$ladir'"
-	    func_warning "passing it literally to the linker, although it might fail"
-	    abs_ladir="$ladir"
-	  fi
-	  ;;
-	esac
-	func_basename "$lib"
-	laname="$func_basename_result"
-
-	# Find the relevant object directory and library name.
-	if test "X$installed" = Xyes; then
-	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-	    func_warning "library \`$lib' was moved."
-	    dir="$ladir"
-	    absdir="$abs_ladir"
-	    libdir="$abs_ladir"
-	  else
-	    dir="$libdir"
-	    absdir="$libdir"
-	  fi
-	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
-	else
-	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-	    dir="$ladir"
-	    absdir="$abs_ladir"
-	    # Remove this search path later
-	    notinst_path="$notinst_path $abs_ladir"
-	  else
-	    dir="$ladir/$objdir"
-	    absdir="$abs_ladir/$objdir"
-	    # Remove this search path later
-	    notinst_path="$notinst_path $abs_ladir"
-	  fi
-	fi # $installed = yes
-	func_stripname 'lib' '.la' "$laname"
-	name=$func_stripname_result
-
-	# This library was specified with -dlpreopen.
-	if test "$pass" = dlpreopen; then
-	  if test -z "$libdir" && test "$linkmode" = prog; then
-	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
-	  fi
-	  # Prefer using a static library (so that no silly _DYNAMIC symbols
-	  # are required to link).
-	  if test -n "$old_library"; then
-	    newdlprefiles="$newdlprefiles $dir/$old_library"
-	    # Keep a list of preopened convenience libraries to check
-	    # that they are being used correctly in the link pass.
-	    test -z "$libdir" && \
-		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
-	  # Otherwise, use the dlname, so that lt_dlopen finds it.
-	  elif test -n "$dlname"; then
-	    newdlprefiles="$newdlprefiles $dir/$dlname"
-	  else
-	    newdlprefiles="$newdlprefiles $dir/$linklib"
-	  fi
-	fi # $pass = dlpreopen
-
-	if test -z "$libdir"; then
-	  # Link the convenience library
-	  if test "$linkmode" = lib; then
-	    deplibs="$dir/$old_library $deplibs"
-	  elif test "$linkmode,$pass" = "prog,link"; then
-	    compile_deplibs="$dir/$old_library $compile_deplibs"
-	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
-	  else
-	    deplibs="$lib $deplibs" # used for prog,scan pass
-	  fi
-	  continue
-	fi
-
-
-	if test "$linkmode" = prog && test "$pass" != link; then
-	  newlib_search_path="$newlib_search_path $ladir"
-	  deplibs="$lib $deplibs"
-
-	  linkalldeplibs=no
-	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
-	     test "$build_libtool_libs" = no; then
-	    linkalldeplibs=yes
-	  fi
-
-	  tmp_libs=
-	  for deplib in $dependency_libs; do
-	    case $deplib in
-	    -L*) func_stripname '-L' '' "$deplib"
-	         newlib_search_path="$newlib_search_path $func_stripname_result"
-		 ;;
-	    esac
-	    # Need to link against all dependency_libs?
-	    if test "$linkalldeplibs" = yes; then
-	      deplibs="$deplib $deplibs"
-	    else
-	      # Need to hardcode shared library paths
-	      # or/and link against static libraries
-	      newdependency_libs="$deplib $newdependency_libs"
-	    fi
-	    if $opt_duplicate_deps ; then
-	      case "$tmp_libs " in
-	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-	      esac
-	    fi
-	    tmp_libs="$tmp_libs $deplib"
-	  done # for deplib
-	  continue
-	fi # $linkmode = prog...
-
-	if test "$linkmode,$pass" = "prog,link"; then
-	  if test -n "$library_names" &&
-	     { { test "$prefer_static_libs" = no ||
-	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
-	       test -z "$old_library"; }; then
-	    # We need to hardcode the library path
-	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
-	      # Make sure the rpath contains only unique directories.
-	      case "$temp_rpath:" in
-	      *"$absdir:"*) ;;
-	      *) temp_rpath="$temp_rpath$absdir:" ;;
-	      esac
-	    fi
-
-	    # Hardcode the library path.
-	    # Skip directories that are in the system default run-time
-	    # search path.
-	    case " $sys_lib_dlsearch_path " in
-	    *" $absdir "*) ;;
-	    *)
-	      case "$compile_rpath " in
-	      *" $absdir "*) ;;
-	      *) compile_rpath="$compile_rpath $absdir"
-	      esac
-	      ;;
-	    esac
-	    case " $sys_lib_dlsearch_path " in
-	    *" $libdir "*) ;;
-	    *)
-	      case "$finalize_rpath " in
-	      *" $libdir "*) ;;
-	      *) finalize_rpath="$finalize_rpath $libdir"
-	      esac
-	      ;;
-	    esac
-	  fi # $linkmode,$pass = prog,link...
-
-	  if test "$alldeplibs" = yes &&
-	     { test "$deplibs_check_method" = pass_all ||
-	       { test "$build_libtool_libs" = yes &&
-		 test -n "$library_names"; }; }; then
-	    # We only need to search for static libraries
-	    continue
-	  fi
-	fi
-
-	link_static=no # Whether the deplib will be linked statically
-	use_static_libs=$prefer_static_libs
-	if test "$use_static_libs" = built && test "$installed" = yes; then
-	  use_static_libs=no
-	fi
-	if test -n "$library_names" &&
-	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
-	  case $host in
-	  *cygwin* | *mingw* | *cegcc*)
-	      # No point in relinking DLLs because paths are not encoded
-	      notinst_deplibs="$notinst_deplibs $lib"
-	      need_relink=no
-	    ;;
-	  *)
-	    if test "$installed" = no; then
-	      notinst_deplibs="$notinst_deplibs $lib"
-	      need_relink=yes
-	    fi
-	    ;;
-	  esac
-	  # This is a shared library
-
-	  # Warn about portability, can't link against -module's on some
-	  # systems (darwin).  Don't bleat about dlopened modules though!
-	  dlopenmodule=""
-	  for dlpremoduletest in $dlprefiles; do
-	    if test "X$dlpremoduletest" = "X$lib"; then
-	      dlopenmodule="$dlpremoduletest"
-	      break
-	    fi
-	  done
-	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
-	    $ECHO
-	    if test "$linkmode" = prog; then
-	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
-	    else
-	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
-	    fi
-	    $ECHO "*** $linklib is not portable!"
-	  fi
-	  if test "$linkmode" = lib &&
-	     test "$hardcode_into_libs" = yes; then
-	    # Hardcode the library path.
-	    # Skip directories that are in the system default run-time
-	    # search path.
-	    case " $sys_lib_dlsearch_path " in
-	    *" $absdir "*) ;;
-	    *)
-	      case "$compile_rpath " in
-	      *" $absdir "*) ;;
-	      *) compile_rpath="$compile_rpath $absdir"
-	      esac
-	      ;;
-	    esac
-	    case " $sys_lib_dlsearch_path " in
-	    *" $libdir "*) ;;
-	    *)
-	      case "$finalize_rpath " in
-	      *" $libdir "*) ;;
-	      *) finalize_rpath="$finalize_rpath $libdir"
-	      esac
-	      ;;
-	    esac
-	  fi
-
-	  if test -n "$old_archive_from_expsyms_cmds"; then
-	    # figure out the soname
-	    set dummy $library_names
-	    shift
-	    realname="$1"
-	    shift
-	    libname=`eval "\\$ECHO \"$libname_spec\""`
-	    # use dlname if we got it. it's perfectly good, no?
-	    if test -n "$dlname"; then
-	      soname="$dlname"
-	    elif test -n "$soname_spec"; then
-	      # bleh windows
-	      case $host in
-	      *cygwin* | mingw* | *cegcc*)
-	        func_arith $current - $age
-		major=$func_arith_result
-		versuffix="-$major"
-		;;
-	      esac
-	      eval soname=\"$soname_spec\"
-	    else
-	      soname="$realname"
-	    fi
-
-	    # Make a new name for the extract_expsyms_cmds to use
-	    soroot="$soname"
-	    func_basename "$soroot"
-	    soname="$func_basename_result"
-	    func_stripname 'lib' '.dll' "$soname"
-	    newlib=libimp-$func_stripname_result.a
-
-	    # If the library has no export list, then create one now
-	    if test -f "$output_objdir/$soname-def"; then :
-	    else
-	      func_verbose "extracting exported symbol list from \`$soname'"
-	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
-	    fi
-
-	    # Create $newlib
-	    if test -f "$output_objdir/$newlib"; then :; else
-	      func_verbose "generating import library for \`$soname'"
-	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
-	    fi
-	    # make sure the library variables are pointing to the new library
-	    dir=$output_objdir
-	    linklib=$newlib
-	  fi # test -n "$old_archive_from_expsyms_cmds"
-
-	  if test "$linkmode" = prog || test "$mode" != relink; then
-	    add_shlibpath=
-	    add_dir=
-	    add=
-	    lib_linked=yes
-	    case $hardcode_action in
-	    immediate | unsupported)
-	      if test "$hardcode_direct" = no; then
-		add="$dir/$linklib"
-		case $host in
-		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
-		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
-		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
-		    *-*-unixware7*) add_dir="-L$dir" ;;
-		  *-*-darwin* )
-		    # if the lib is a (non-dlopened) module then we can not
-		    # link against it, someone is ignoring the earlier warnings
-		    if /usr/bin/file -L $add 2> /dev/null |
-			 $GREP ": [^:]* bundle" >/dev/null ; then
-		      if test "X$dlopenmodule" != "X$lib"; then
-			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
-			if test -z "$old_library" ; then
-			  $ECHO
-			  $ECHO "*** And there doesn't seem to be a static archive available"
-			  $ECHO "*** The link will probably fail, sorry"
-			else
-			  add="$dir/$old_library"
-			fi
-		      elif test -n "$old_library"; then
-			add="$dir/$old_library"
-		      fi
-		    fi
-		esac
-	      elif test "$hardcode_minus_L" = no; then
-		case $host in
-		*-*-sunos*) add_shlibpath="$dir" ;;
-		esac
-		add_dir="-L$dir"
-		add="-l$name"
-	      elif test "$hardcode_shlibpath_var" = no; then
-		add_shlibpath="$dir"
-		add="-l$name"
-	      else
-		lib_linked=no
-	      fi
-	      ;;
-	    relink)
-	      if test "$hardcode_direct" = yes &&
-	         test "$hardcode_direct_absolute" = no; then
-		add="$dir/$linklib"
-	      elif test "$hardcode_minus_L" = yes; then
-		add_dir="-L$dir"
-		# Try looking first in the location we're being installed to.
-		if test -n "$inst_prefix_dir"; then
-		  case $libdir in
-		    [\\/]*)
-		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
-		      ;;
-		  esac
-		fi
-		add="-l$name"
-	      elif test "$hardcode_shlibpath_var" = yes; then
-		add_shlibpath="$dir"
-		add="-l$name"
-	      else
-		lib_linked=no
-	      fi
-	      ;;
-	    *) lib_linked=no ;;
-	    esac
-
-	    if test "$lib_linked" != yes; then
-	      func_fatal_configuration "unsupported hardcode properties"
-	    fi
-
-	    if test -n "$add_shlibpath"; then
-	      case :$compile_shlibpath: in
-	      *":$add_shlibpath:"*) ;;
-	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
-	      esac
-	    fi
-	    if test "$linkmode" = prog; then
-	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
-	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
-	    else
-	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
-	      test -n "$add" && deplibs="$add $deplibs"
-	      if test "$hardcode_direct" != yes &&
-		 test "$hardcode_minus_L" != yes &&
-		 test "$hardcode_shlibpath_var" = yes; then
-		case :$finalize_shlibpath: in
-		*":$libdir:"*) ;;
-		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
-		esac
-	      fi
-	    fi
-	  fi
-
-	  if test "$linkmode" = prog || test "$mode" = relink; then
-	    add_shlibpath=
-	    add_dir=
-	    add=
-	    # Finalize command for both is simple: just hardcode it.
-	    if test "$hardcode_direct" = yes &&
-	       test "$hardcode_direct_absolute" = no; then
-	      add="$libdir/$linklib"
-	    elif test "$hardcode_minus_L" = yes; then
-	      add_dir="-L$libdir"
-	      add="-l$name"
-	    elif test "$hardcode_shlibpath_var" = yes; then
-	      case :$finalize_shlibpath: in
-	      *":$libdir:"*) ;;
-	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
-	      esac
-	      add="-l$name"
-	    elif test "$hardcode_automatic" = yes; then
-	      if test -n "$inst_prefix_dir" &&
-		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
-		add="$inst_prefix_dir$libdir/$linklib"
-	      else
-		add="$libdir/$linklib"
-	      fi
-	    else
-	      # We cannot seem to hardcode it, guess we'll fake it.
-	      add_dir="-L$libdir"
-	      # Try looking first in the location we're being installed to.
-	      if test -n "$inst_prefix_dir"; then
-		case $libdir in
-		  [\\/]*)
-		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
-		    ;;
-		esac
-	      fi
-	      add="-l$name"
-	    fi
-
-	    if test "$linkmode" = prog; then
-	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
-	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
-	    else
-	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
-	      test -n "$add" && deplibs="$add $deplibs"
-	    fi
-	  fi
-	elif test "$linkmode" = prog; then
-	  # Here we assume that one of hardcode_direct or hardcode_minus_L
-	  # is not unsupported.  This is valid on all known static and
-	  # shared platforms.
-	  if test "$hardcode_direct" != unsupported; then
-	    test -n "$old_library" && linklib="$old_library"
-	    compile_deplibs="$dir/$linklib $compile_deplibs"
-	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
-	  else
-	    compile_deplibs="-l$name -L$dir $compile_deplibs"
-	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
-	  fi
-	elif test "$build_libtool_libs" = yes; then
-	  # Not a shared library
-	  if test "$deplibs_check_method" != pass_all; then
-	    # We're trying link a shared library against a static one
-	    # but the system doesn't support it.
-
-	    # Just print a warning and add the library to dependency_libs so
-	    # that the program can be linked against the static library.
-	    $ECHO
-	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
-	    $ECHO "*** I have the capability to make that library automatically link in when"
-	    $ECHO "*** you link to this library.  But I can only do this if you have a"
-	    $ECHO "*** shared version of the library, which you do not appear to have."
-	    if test "$module" = yes; then
-	      $ECHO "*** But as you try to build a module library, libtool will still create "
-	      $ECHO "*** a static module, that should work as long as the dlopening application"
-	      $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
-	      if test -z "$global_symbol_pipe"; then
-		$ECHO
-		$ECHO "*** However, this would only work if libtool was able to extract symbol"
-		$ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
-		$ECHO "*** not find such a program.  So, this module is probably useless."
-		$ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
-	      fi
-	      if test "$build_old_libs" = no; then
-		build_libtool_libs=module
-		build_old_libs=yes
-	      else
-		build_libtool_libs=no
-	      fi
-	    fi
-	  else
-	    deplibs="$dir/$old_library $deplibs"
-	    link_static=yes
-	  fi
-	fi # link shared/static library?
-
-	if test "$linkmode" = lib; then
-	  if test -n "$dependency_libs" &&
-	     { test "$hardcode_into_libs" != yes ||
-	       test "$build_old_libs" = yes ||
-	       test "$link_static" = yes; }; then
-	    # Extract -R from dependency_libs
-	    temp_deplibs=
-	    for libdir in $dependency_libs; do
-	      case $libdir in
-	      -R*) func_stripname '-R' '' "$libdir"
-	           temp_xrpath=$func_stripname_result
-		   case " $xrpath " in
-		   *" $temp_xrpath "*) ;;
-		   *) xrpath="$xrpath $temp_xrpath";;
-		   esac;;
-	      *) temp_deplibs="$temp_deplibs $libdir";;
-	      esac
-	    done
-	    dependency_libs="$temp_deplibs"
-	  fi
-
-	  newlib_search_path="$newlib_search_path $absdir"
-	  # Link against this library
-	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
-	  # ... and its dependency_libs
-	  tmp_libs=
-	  for deplib in $dependency_libs; do
-	    newdependency_libs="$deplib $newdependency_libs"
-	    if $opt_duplicate_deps ; then
-	      case "$tmp_libs " in
-	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-	      esac
-	    fi
-	    tmp_libs="$tmp_libs $deplib"
-	  done
-
-	  if test "$link_all_deplibs" != no; then
-	    # Add the search paths of all dependency libraries
-	    for deplib in $dependency_libs; do
-	      case $deplib in
-	      -L*) path="$deplib" ;;
-	      *.la)
-	        func_dirname "$deplib" "" "."
-		dir="$func_dirname_result"
-		# We need an absolute path.
-		case $dir in
-		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
-		*)
-		  absdir=`cd "$dir" && pwd`
-		  if test -z "$absdir"; then
-		    func_warning "cannot determine absolute directory name of \`$dir'"
-		    absdir="$dir"
-		  fi
-		  ;;
-		esac
-		if $GREP "^installed=no" $deplib > /dev/null; then
-		case $host in
-		*-*-darwin*)
-		  depdepl=
-		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
-		  if test -n "$deplibrary_names" ; then
-		    for tmp in $deplibrary_names ; do
-		      depdepl=$tmp
-		    done
-		    if test -f "$absdir/$objdir/$depdepl" ; then
-		      depdepl="$absdir/$objdir/$depdepl"
-		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
-                      if test -z "$darwin_install_name"; then
-                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
-                      fi
-		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
-		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
-		      path=
-		    fi
-		  fi
-		  ;;
-		*)
-		  path="-L$absdir/$objdir"
-		  ;;
-		esac
-		else
-		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-		  test -z "$libdir" && \
-		    func_fatal_error "\`$deplib' is not a valid libtool archive"
-		  test "$absdir" != "$libdir" && \
-		    func_warning "\`$deplib' seems to be moved"
-
-		  path="-L$absdir"
-		fi
-		;;
-	      esac
-	      case " $deplibs " in
-	      *" $path "*) ;;
-	      *) deplibs="$path $deplibs" ;;
-	      esac
-	    done
-	  fi # link_all_deplibs != no
-	fi # linkmode = lib
-      done # for deplib in $libs
-      if test "$pass" = link; then
-	if test "$linkmode" = "prog"; then
-	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
-	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
-	else
-	  compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	fi
-      fi
-      dependency_libs="$newdependency_libs"
-      if test "$pass" = dlpreopen; then
-	# Link the dlpreopened libraries before other libraries
-	for deplib in $save_deplibs; do
-	  deplibs="$deplib $deplibs"
-	done
-      fi
-      if test "$pass" != dlopen; then
-	if test "$pass" != conv; then
-	  # Make sure lib_search_path contains only unique directories.
-	  lib_search_path=
-	  for dir in $newlib_search_path; do
-	    case "$lib_search_path " in
-	    *" $dir "*) ;;
-	    *) lib_search_path="$lib_search_path $dir" ;;
-	    esac
-	  done
-	  newlib_search_path=
-	fi
-
-	if test "$linkmode,$pass" != "prog,link"; then
-	  vars="deplibs"
-	else
-	  vars="compile_deplibs finalize_deplibs"
-	fi
-	for var in $vars dependency_libs; do
-	  # Add libraries to $var in reverse order
-	  eval tmp_libs=\"\$$var\"
-	  new_libs=
-	  for deplib in $tmp_libs; do
-	    # FIXME: Pedantically, this is the right thing to do, so
-	    #        that some nasty dependency loop isn't accidentally
-	    #        broken:
-	    #new_libs="$deplib $new_libs"
-	    # Pragmatically, this seems to cause very few problems in
-	    # practice:
-	    case $deplib in
-	    -L*) new_libs="$deplib $new_libs" ;;
-	    -R*) ;;
-	    *)
-	      # And here is the reason: when a library appears more
-	      # than once as an explicit dependence of a library, or
-	      # is implicitly linked in more than once by the
-	      # compiler, it is considered special, and multiple
-	      # occurrences thereof are not removed.  Compare this
-	      # with having the same library being listed as a
-	      # dependency of multiple other libraries: in this case,
-	      # we know (pedantically, we assume) the library does not
-	      # need to be listed more than once, so we keep only the
-	      # last copy.  This is not always right, but it is rare
-	      # enough that we require users that really mean to play
-	      # such unportable linking tricks to link the library
-	      # using -Wl,-lname, so that libtool does not consider it
-	      # for duplicate removal.
-	      case " $specialdeplibs " in
-	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
-	      *)
-		case " $new_libs " in
-		*" $deplib "*) ;;
-		*) new_libs="$deplib $new_libs" ;;
-		esac
-		;;
-	      esac
-	      ;;
-	    esac
-	  done
-	  tmp_libs=
-	  for deplib in $new_libs; do
-	    case $deplib in
-	    -L*)
-	      case " $tmp_libs " in
-	      *" $deplib "*) ;;
-	      *) tmp_libs="$tmp_libs $deplib" ;;
-	      esac
-	      ;;
-	    *) tmp_libs="$tmp_libs $deplib" ;;
-	    esac
-	  done
-	  eval $var=\"$tmp_libs\"
-	done # for var
-      fi
-      # Last step: remove runtime libs from dependency_libs
-      # (they stay in deplibs)
-      tmp_libs=
-      for i in $dependency_libs ; do
-	case " $predeps $postdeps $compiler_lib_search_path " in
-	*" $i "*)
-	  i=""
-	  ;;
-	esac
-	if test -n "$i" ; then
-	  tmp_libs="$tmp_libs $i"
-	fi
-      done
-      dependency_libs=$tmp_libs
-    done # for pass
-    if test "$linkmode" = prog; then
-      dlfiles="$newdlfiles"
-    fi
-    if test "$linkmode" = prog || test "$linkmode" = lib; then
-      dlprefiles="$newdlprefiles"
-    fi
-
-    case $linkmode in
-    oldlib)
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-	func_warning "\`-dlopen' is ignored for archives"
-      fi
-
-      case " $deplibs" in
-      *\ -l* | *\ -L*)
-	func_warning "\`-l' and \`-L' are ignored for archives" ;;
-      esac
-
-      test -n "$rpath" && \
-	func_warning "\`-rpath' is ignored for archives"
-
-      test -n "$xrpath" && \
-	func_warning "\`-R' is ignored for archives"
-
-      test -n "$vinfo" && \
-	func_warning "\`-version-info/-version-number' is ignored for archives"
-
-      test -n "$release" && \
-	func_warning "\`-release' is ignored for archives"
-
-      test -n "$export_symbols$export_symbols_regex" && \
-	func_warning "\`-export-symbols' is ignored for archives"
-
-      # Now set the variables for building old libraries.
-      build_libtool_libs=no
-      oldlibs="$output"
-      objs="$objs$old_deplibs"
-      ;;
-
-    lib)
-      # Make sure we only generate libraries of the form `libNAME.la'.
-      case $outputname in
-      lib*)
-	func_stripname 'lib' '.la' "$outputname"
-	name=$func_stripname_result
-	eval shared_ext=\"$shrext_cmds\"
-	eval libname=\"$libname_spec\"
-	;;
-      *)
-	test "$module" = no && \
-	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
-
-	if test "$need_lib_prefix" != no; then
-	  # Add the "lib" prefix for modules if required
-	  func_stripname '' '.la' "$outputname"
-	  name=$func_stripname_result
-	  eval shared_ext=\"$shrext_cmds\"
-	  eval libname=\"$libname_spec\"
-	else
-	  func_stripname '' '.la' "$outputname"
-	  libname=$func_stripname_result
-	fi
-	;;
-      esac
-
-      if test -n "$objs"; then
-	if test "$deplibs_check_method" != pass_all; then
-	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
-	else
-	  $ECHO
-	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
-	  $ECHO "*** objects $objs is not portable!"
-	  libobjs="$libobjs $objs"
-	fi
-      fi
-
-      test "$dlself" != no && \
-	func_warning "\`-dlopen self' is ignored for libtool libraries"
-
-      set dummy $rpath
-      shift
-      test "$#" -gt 1 && \
-	func_warning "ignoring multiple \`-rpath's for a libtool library"
-
-      install_libdir="$1"
-
-      oldlibs=
-      if test -z "$rpath"; then
-	if test "$build_libtool_libs" = yes; then
-	  # Building a libtool convenience library.
-	  # Some compilers have problems with a `.al' extension so
-	  # convenience libraries should have the same extension an
-	  # archive normally would.
-	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
-	  build_libtool_libs=convenience
-	  build_old_libs=yes
-	fi
-
-	test -n "$vinfo" && \
-	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
-
-	test -n "$release" && \
-	  func_warning "\`-release' is ignored for convenience libraries"
-      else
-
-	# Parse the version information argument.
-	save_ifs="$IFS"; IFS=':'
-	set dummy $vinfo 0 0 0
-	shift
-	IFS="$save_ifs"
-
-	test -n "$7" && \
-	  func_fatal_help "too many parameters to \`-version-info'"
-
-	# convert absolute version numbers to libtool ages
-	# this retains compatibility with .la files and attempts
-	# to make the code below a bit more comprehensible
-
-	case $vinfo_number in
-	yes)
-	  number_major="$1"
-	  number_minor="$2"
-	  number_revision="$3"
-	  #
-	  # There are really only two kinds -- those that
-	  # use the current revision as the major version
-	  # and those that subtract age and use age as
-	  # a minor version.  But, then there is irix
-	  # which has an extra 1 added just for fun
-	  #
-	  case $version_type in
-	  darwin|linux|osf|windows|none)
-	    func_arith $number_major + $number_minor
-	    current=$func_arith_result
-	    age="$number_minor"
-	    revision="$number_revision"
-	    ;;
-	  freebsd-aout|freebsd-elf|sunos)
-	    current="$number_major"
-	    revision="$number_minor"
-	    age="0"
-	    ;;
-	  irix|nonstopux)
-	    func_arith $number_major + $number_minor
-	    current=$func_arith_result
-	    age="$number_minor"
-	    revision="$number_minor"
-	    lt_irix_increment=no
-	    ;;
-	  *)
-	    func_fatal_configuration "$modename: unknown library version type \`$version_type'"
-	    ;;
-	  esac
-	  ;;
-	no)
-	  current="$1"
-	  revision="$2"
-	  age="$3"
-	  ;;
-	esac
-
-	# Check that each of the things are valid numbers.
-	case $current in
-	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-	*)
-	  func_error "CURRENT \`$current' must be a nonnegative integer"
-	  func_fatal_error "\`$vinfo' is not valid version information"
-	  ;;
-	esac
-
-	case $revision in
-	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-	*)
-	  func_error "REVISION \`$revision' must be a nonnegative integer"
-	  func_fatal_error "\`$vinfo' is not valid version information"
-	  ;;
-	esac
-
-	case $age in
-	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-	*)
-	  func_error "AGE \`$age' must be a nonnegative integer"
-	  func_fatal_error "\`$vinfo' is not valid version information"
-	  ;;
-	esac
-
-	if test "$age" -gt "$current"; then
-	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
-	  func_fatal_error "\`$vinfo' is not valid version information"
-	fi
-
-	# Calculate the version variables.
-	major=
-	versuffix=
-	verstring=
-	case $version_type in
-	none) ;;
-
-	darwin)
-	  # Like Linux, but with the current version available in
-	  # verstring for coding it into the library header
-	  func_arith $current - $age
-	  major=.$func_arith_result
-	  versuffix="$major.$age.$revision"
-	  # Darwin ld doesn't like 0 for these options...
-	  func_arith $current + 1
-	  minor_current=$func_arith_result
-	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
-	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
-	  ;;
-
-	freebsd-aout)
-	  major=".$current"
-	  versuffix=".$current.$revision";
-	  ;;
-
-	freebsd-elf)
-	  major=".$current"
-	  versuffix=".$current"
-	  ;;
-
-	irix | nonstopux)
-	  if test "X$lt_irix_increment" = "Xno"; then
-	    func_arith $current - $age
-	  else
-	    func_arith $current - $age + 1
-	  fi
-	  major=$func_arith_result
-
-	  case $version_type in
-	    nonstopux) verstring_prefix=nonstopux ;;
-	    *)         verstring_prefix=sgi ;;
-	  esac
-	  verstring="$verstring_prefix$major.$revision"
-
-	  # Add in all the interfaces that we are compatible with.
-	  loop=$revision
-	  while test "$loop" -ne 0; do
-	    func_arith $revision - $loop
-	    iface=$func_arith_result
-	    func_arith $loop - 1
-	    loop=$func_arith_result
-	    verstring="$verstring_prefix$major.$iface:$verstring"
-	  done
-
-	  # Before this point, $major must not contain `.'.
-	  major=.$major
-	  versuffix="$major.$revision"
-	  ;;
-
-	linux)
-	  func_arith $current - $age
-	  major=.$func_arith_result
-	  versuffix="$major.$age.$revision"
-	  ;;
-
-	osf)
-	  func_arith $current - $age
-	  major=.$func_arith_result
-	  versuffix=".$current.$age.$revision"
-	  verstring="$current.$age.$revision"
-
-	  # Add in all the interfaces that we are compatible with.
-	  loop=$age
-	  while test "$loop" -ne 0; do
-	    func_arith $current - $loop
-	    iface=$func_arith_result
-	    func_arith $loop - 1
-	    loop=$func_arith_result
-	    verstring="$verstring:${iface}.0"
-	  done
-
-	  # Make executables depend on our current version.
-	  verstring="$verstring:${current}.0"
-	  ;;
-
-	qnx)
-	  major=".$current"
-	  versuffix=".$current"
-	  ;;
-
-	sunos)
-	  major=".$current"
-	  versuffix=".$current.$revision"
-	  ;;
-
-	windows)
-	  # Use '-' rather than '.', since we only want one
-	  # extension on DOS 8.3 filesystems.
-	  func_arith $current - $age
-	  major=$func_arith_result
-	  versuffix="-$major"
-	  ;;
-
-	*)
-	  func_fatal_configuration "unknown library version type \`$version_type'"
-	  ;;
-	esac
-
-	# Clear the version info if we defaulted, and they specified a release.
-	if test -z "$vinfo" && test -n "$release"; then
-	  major=
-	  case $version_type in
-	  darwin)
-	    # we can't check for "0.0" in archive_cmds due to quoting
-	    # problems, so we reset it completely
-	    verstring=
-	    ;;
-	  *)
-	    verstring="0.0"
-	    ;;
-	  esac
-	  if test "$need_version" = no; then
-	    versuffix=
-	  else
-	    versuffix=".0.0"
-	  fi
-	fi
-
-	# Remove version info from name if versioning should be avoided
-	if test "$avoid_version" = yes && test "$need_version" = no; then
-	  major=
-	  versuffix=
-	  verstring=""
-	fi
-
-	# Check to see if the archive will have undefined symbols.
-	if test "$allow_undefined" = yes; then
-	  if test "$allow_undefined_flag" = unsupported; then
-	    func_warning "undefined symbols not allowed in $host shared libraries"
-	    build_libtool_libs=no
-	    build_old_libs=yes
-	  fi
-	else
-	  # Don't allow undefined symbols.
-	  allow_undefined_flag="$no_undefined_flag"
-	fi
-
-      fi
-
-      func_generate_dlsyms "$libname" "$libname" "yes"
-      libobjs="$libobjs $symfileobj"
-      test "X$libobjs" = "X " && libobjs=
-
-      if test "$mode" != relink; then
-	# Remove our outputs, but don't remove object files since they
-	# may have been created when compiling PIC objects.
-	removelist=
-	tempremovelist=`$ECHO "$output_objdir/*"`
-	for p in $tempremovelist; do
-	  case $p in
-	    *.$objext | *.gcno)
-	       ;;
-	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
-	       if test "X$precious_files_regex" != "X"; then
-		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
-		 then
-		   continue
-		 fi
-	       fi
-	       removelist="$removelist $p"
-	       ;;
-	    *) ;;
-	  esac
-	done
-	test -n "$removelist" && \
-	  func_show_eval "${RM}r \$removelist"
-      fi
-
-      # Now set the variables for building old libraries.
-      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
-	oldlibs="$oldlibs $output_objdir/$libname.$libext"
-
-	# Transform .lo files to .o files.
-	oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
-      fi
-
-      # Eliminate all temporary directories.
-      #for path in $notinst_path; do
-      #	lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
-      #	deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
-      #	dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
-      #done
-
-      if test -n "$xrpath"; then
-	# If the user specified any rpath flags, then add them.
-	temp_xrpath=
-	for libdir in $xrpath; do
-	  temp_xrpath="$temp_xrpath -R$libdir"
-	  case "$finalize_rpath " in
-	  *" $libdir "*) ;;
-	  *) finalize_rpath="$finalize_rpath $libdir" ;;
-	  esac
-	done
-	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
-	  dependency_libs="$temp_xrpath $dependency_libs"
-	fi
-      fi
-
-      # Make sure dlfiles contains only unique files that won't be dlpreopened
-      old_dlfiles="$dlfiles"
-      dlfiles=
-      for lib in $old_dlfiles; do
-	case " $dlprefiles $dlfiles " in
-	*" $lib "*) ;;
-	*) dlfiles="$dlfiles $lib" ;;
-	esac
-      done
-
-      # Make sure dlprefiles contains only unique files
-      old_dlprefiles="$dlprefiles"
-      dlprefiles=
-      for lib in $old_dlprefiles; do
-	case "$dlprefiles " in
-	*" $lib "*) ;;
-	*) dlprefiles="$dlprefiles $lib" ;;
-	esac
-      done
-
-      if test "$build_libtool_libs" = yes; then
-	if test -n "$rpath"; then
-	  case $host in
-	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
-	    # these systems don't actually have a c library (as such)!
-	    ;;
-	  *-*-rhapsody* | *-*-darwin1.[012])
-	    # Rhapsody C library is in the System framework
-	    deplibs="$deplibs System.ltframework"
-	    ;;
-	  *-*-netbsd*)
-	    # Don't link with libc until the a.out ld.so is fixed.
-	    ;;
-	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
-	    # Do not include libc due to us having libc/libc_r.
-	    ;;
-	  *-*-sco3.2v5* | *-*-sco5v6*)
-	    # Causes problems with __ctype
-	    ;;
-	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
-	    # Compiler inserts libc in the correct place for threads to work
-	    ;;
-	  *)
-	    # Add libc to deplibs on all other systems if necessary.
-	    if test "$build_libtool_need_lc" = "yes"; then
-	      deplibs="$deplibs -lc"
-	    fi
-	    ;;
-	  esac
-	fi
-
-	# Transform deplibs into only deplibs that can be linked in shared.
-	name_save=$name
-	libname_save=$libname
-	release_save=$release
-	versuffix_save=$versuffix
-	major_save=$major
-	# I'm not sure if I'm treating the release correctly.  I think
-	# release should show up in the -l (ie -lgmp5) so we don't want to
-	# add it in twice.  Is that correct?
-	release=""
-	versuffix=""
-	major=""
-	newdeplibs=
-	droppeddeps=no
-	case $deplibs_check_method in
-	pass_all)
-	  # Don't check for shared/static.  Everything works.
-	  # This might be a little naive.  We might want to check
-	  # whether the library exists or not.  But this is on
-	  # osf3 & osf4 and I'm not really sure... Just
-	  # implementing what was already the behavior.
-	  newdeplibs=$deplibs
-	  ;;
-	test_compile)
-	  # This code stresses the "libraries are programs" paradigm to its
-	  # limits. Maybe even breaks it.  We compile a program, linking it
-	  # against the deplibs as a proxy for the library.  Then we can check
-	  # whether they linked in statically or dynamically with ldd.
-	  $opt_dry_run || $RM conftest.c
-	  cat > conftest.c <<EOF
-	  int main() { return 0; }
-EOF
-	  $opt_dry_run || $RM conftest
-	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
-	    ldd_output=`ldd conftest`
-	    for i in $deplibs; do
-	      case $i in
-	      -l*)
-		func_stripname -l '' "$i"
-		name=$func_stripname_result
-		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-		  case " $predeps $postdeps " in
-		  *" $i "*)
-		    newdeplibs="$newdeplibs $i"
-		    i=""
-		    ;;
-		  esac
-		fi
-		if test -n "$i" ; then
-		  libname=`eval "\\$ECHO \"$libname_spec\""`
-		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
-		  set dummy $deplib_matches; shift
-		  deplib_match=$1
-		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
-		    newdeplibs="$newdeplibs $i"
-		  else
-		    droppeddeps=yes
-		    $ECHO
-		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
-		    $ECHO "*** I have the capability to make that library automatically link in when"
-		    $ECHO "*** you link to this library.  But I can only do this if you have a"
-		    $ECHO "*** shared version of the library, which I believe you do not have"
-		    $ECHO "*** because a test_compile did reveal that the linker did not use it for"
-		    $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
-		  fi
-		fi
-		;;
-	      *)
-		newdeplibs="$newdeplibs $i"
-		;;
-	      esac
-	    done
-	  else
-	    # Error occurred in the first compile.  Let's try to salvage
-	    # the situation: Compile a separate program for each library.
-	    for i in $deplibs; do
-	      case $i in
-	      -l*)
-		func_stripname -l '' "$i"
-		name=$func_stripname_result
-		$opt_dry_run || $RM conftest
-		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
-		  ldd_output=`ldd conftest`
-		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-		    case " $predeps $postdeps " in
-		    *" $i "*)
-		      newdeplibs="$newdeplibs $i"
-		      i=""
-		      ;;
-		    esac
-		  fi
-		  if test -n "$i" ; then
-		    libname=`eval "\\$ECHO \"$libname_spec\""`
-		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
-		    set dummy $deplib_matches; shift
-		    deplib_match=$1
-		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
-		      newdeplibs="$newdeplibs $i"
-		    else
-		      droppeddeps=yes
-		      $ECHO
-		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
-		      $ECHO "*** I have the capability to make that library automatically link in when"
-		      $ECHO "*** you link to this library.  But I can only do this if you have a"
-		      $ECHO "*** shared version of the library, which you do not appear to have"
-		      $ECHO "*** because a test_compile did reveal that the linker did not use this one"
-		      $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
-		    fi
-		  fi
-		else
-		  droppeddeps=yes
-		  $ECHO
-		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
-		  $ECHO "*** make it link in!  You will probably need to install it or some"
-		  $ECHO "*** library that it depends on before this library will be fully"
-		  $ECHO "*** functional.  Installing it before continuing would be even better."
-		fi
-		;;
-	      *)
-		newdeplibs="$newdeplibs $i"
-		;;
-	      esac
-	    done
-	  fi
-	  ;;
-	file_magic*)
-	  set dummy $deplibs_check_method; shift
-	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-	  for a_deplib in $deplibs; do
-	    case $a_deplib in
-	    -l*)
-	      func_stripname -l '' "$a_deplib"
-	      name=$func_stripname_result
-	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-		case " $predeps $postdeps " in
-		*" $a_deplib "*)
-		  newdeplibs="$newdeplibs $a_deplib"
-		  a_deplib=""
-		  ;;
-		esac
-	      fi
-	      if test -n "$a_deplib" ; then
-		libname=`eval "\\$ECHO \"$libname_spec\""`
-		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
-		  for potent_lib in $potential_libs; do
-		      # Follow soft links.
-		      if ls -lLd "$potent_lib" 2>/dev/null |
-			 $GREP " -> " >/dev/null; then
-			continue
-		      fi
-		      # The statement above tries to avoid entering an
-		      # endless loop below, in case of cyclic links.
-		      # We might still enter an endless loop, since a link
-		      # loop can be closed while we follow links,
-		      # but so what?
-		      potlib="$potent_lib"
-		      while test -h "$potlib" 2>/dev/null; do
-			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
-			case $potliblink in
-			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
-			*) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
-			esac
-		      done
-		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
-			 $SED -e 10q |
-			 $EGREP "$file_magic_regex" > /dev/null; then
-			newdeplibs="$newdeplibs $a_deplib"
-			a_deplib=""
-			break 2
-		      fi
-		  done
-		done
-	      fi
-	      if test -n "$a_deplib" ; then
-		droppeddeps=yes
-		$ECHO
-		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
-		$ECHO "*** I have the capability to make that library automatically link in when"
-		$ECHO "*** you link to this library.  But I can only do this if you have a"
-		$ECHO "*** shared version of the library, which you do not appear to have"
-		$ECHO "*** because I did check the linker path looking for a file starting"
-		if test -z "$potlib" ; then
-		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
-		else
-		  $ECHO "*** with $libname and none of the candidates passed a file format test"
-		  $ECHO "*** using a file magic. Last file checked: $potlib"
-		fi
-	      fi
-	      ;;
-	    *)
-	      # Add a -L argument.
-	      newdeplibs="$newdeplibs $a_deplib"
-	      ;;
-	    esac
-	  done # Gone through all deplibs.
-	  ;;
-	match_pattern*)
-	  set dummy $deplibs_check_method; shift
-	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-	  for a_deplib in $deplibs; do
-	    case $a_deplib in
-	    -l*)
-	      func_stripname -l '' "$a_deplib"
-	      name=$func_stripname_result
-	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-		case " $predeps $postdeps " in
-		*" $a_deplib "*)
-		  newdeplibs="$newdeplibs $a_deplib"
-		  a_deplib=""
-		  ;;
-		esac
-	      fi
-	      if test -n "$a_deplib" ; then
-		libname=`eval "\\$ECHO \"$libname_spec\""`
-		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
-		  for potent_lib in $potential_libs; do
-		    potlib="$potent_lib" # see symlink-check above in file_magic test
-		    if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
-		       $EGREP "$match_pattern_regex" > /dev/null; then
-		      newdeplibs="$newdeplibs $a_deplib"
-		      a_deplib=""
-		      break 2
-		    fi
-		  done
-		done
-	      fi
-	      if test -n "$a_deplib" ; then
-		droppeddeps=yes
-		$ECHO
-		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
-		$ECHO "*** I have the capability to make that library automatically link in when"
-		$ECHO "*** you link to this library.  But I can only do this if you have a"
-		$ECHO "*** shared version of the library, which you do not appear to have"
-		$ECHO "*** because I did check the linker path looking for a file starting"
-		if test -z "$potlib" ; then
-		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
-		else
-		  $ECHO "*** with $libname and none of the candidates passed a file format test"
-		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
-		fi
-	      fi
-	      ;;
-	    *)
-	      # Add a -L argument.
-	      newdeplibs="$newdeplibs $a_deplib"
-	      ;;
-	    esac
-	  done # Gone through all deplibs.
-	  ;;
-	none | unknown | *)
-	  newdeplibs=""
-	  tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
-	      -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
-	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-	    for i in $predeps $postdeps ; do
-	      # can't use Xsed below, because $i might contain '/'
-	      tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
-	    done
-	  fi
-	  if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[	 ]//g' |
-	     $GREP . >/dev/null; then
-	    $ECHO
-	    if test "X$deplibs_check_method" = "Xnone"; then
-	      $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
-	    else
-	      $ECHO "*** Warning: inter-library dependencies are not known to be supported."
-	    fi
-	    $ECHO "*** All declared inter-library dependencies are being dropped."
-	    droppeddeps=yes
-	  fi
-	  ;;
-	esac
-	versuffix=$versuffix_save
-	major=$major_save
-	release=$release_save
-	libname=$libname_save
-	name=$name_save
-
-	case $host in
-	*-*-rhapsody* | *-*-darwin1.[012])
-	  # On Rhapsody replace the C library with the System framework
-	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
-	  ;;
-	esac
-
-	if test "$droppeddeps" = yes; then
-	  if test "$module" = yes; then
-	    $ECHO
-	    $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
-	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
-	    $ECHO "*** a static module, that should work as long as the dlopening"
-	    $ECHO "*** application is linked with the -dlopen flag."
-	    if test -z "$global_symbol_pipe"; then
-	      $ECHO
-	      $ECHO "*** However, this would only work if libtool was able to extract symbol"
-	      $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
-	      $ECHO "*** not find such a program.  So, this module is probably useless."
-	      $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
-	    fi
-	    if test "$build_old_libs" = no; then
-	      oldlibs="$output_objdir/$libname.$libext"
-	      build_libtool_libs=module
-	      build_old_libs=yes
-	    else
-	      build_libtool_libs=no
-	    fi
-	  else
-	    $ECHO "*** The inter-library dependencies that have been dropped here will be"
-	    $ECHO "*** automatically added whenever a program is linked with this library"
-	    $ECHO "*** or is declared to -dlopen it."
-
-	    if test "$allow_undefined" = no; then
-	      $ECHO
-	      $ECHO "*** Since this library must not contain undefined symbols,"
-	      $ECHO "*** because either the platform does not support them or"
-	      $ECHO "*** it was explicitly requested with -no-undefined,"
-	      $ECHO "*** libtool will only create a static version of it."
-	      if test "$build_old_libs" = no; then
-		oldlibs="$output_objdir/$libname.$libext"
-		build_libtool_libs=module
-		build_old_libs=yes
-	      else
-		build_libtool_libs=no
-	      fi
-	    fi
-	  fi
-	fi
-	# Done checking deplibs!
-	deplibs=$newdeplibs
-      fi
-      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
-      case $host in
-	*-*-darwin*)
-	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	  new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	  deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	  ;;
-      esac
-
-      # move library search paths that coincide with paths to not yet
-      # installed libraries to the beginning of the library search list
-      new_libs=
-      for path in $notinst_path; do
-	case " $new_libs " in
-	*" -L$path/$objdir "*) ;;
-	*)
-	  case " $deplibs " in
-	  *" -L$path/$objdir "*)
-	    new_libs="$new_libs -L$path/$objdir" ;;
-	  esac
-	  ;;
-	esac
-      done
-      for deplib in $deplibs; do
-	case $deplib in
-	-L*)
-	  case " $new_libs " in
-	  *" $deplib "*) ;;
-	  *) new_libs="$new_libs $deplib" ;;
-	  esac
-	  ;;
-	*) new_libs="$new_libs $deplib" ;;
-	esac
-      done
-      deplibs="$new_libs"
-
-      # All the library-specific variables (install_libdir is set above).
-      library_names=
-      old_library=
-      dlname=
-
-      # Test again, we may have decided not to build it any more
-      if test "$build_libtool_libs" = yes; then
-	if test "$hardcode_into_libs" = yes; then
-	  # Hardcode the library paths
-	  hardcode_libdirs=
-	  dep_rpath=
-	  rpath="$finalize_rpath"
-	  test "$mode" != relink && rpath="$compile_rpath$rpath"
-	  for libdir in $rpath; do
-	    if test -n "$hardcode_libdir_flag_spec"; then
-	      if test -n "$hardcode_libdir_separator"; then
-		if test -z "$hardcode_libdirs"; then
-		  hardcode_libdirs="$libdir"
-		else
-		  # Just accumulate the unique libdirs.
-		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-		    ;;
-		  *)
-		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
-		    ;;
-		  esac
-		fi
-	      else
-		eval flag=\"$hardcode_libdir_flag_spec\"
-		dep_rpath="$dep_rpath $flag"
-	      fi
-	    elif test -n "$runpath_var"; then
-	      case "$perm_rpath " in
-	      *" $libdir "*) ;;
-	      *) perm_rpath="$perm_rpath $libdir" ;;
-	      esac
-	    fi
-	  done
-	  # Substitute the hardcoded libdirs into the rpath.
-	  if test -n "$hardcode_libdir_separator" &&
-	     test -n "$hardcode_libdirs"; then
-	    libdir="$hardcode_libdirs"
-	    if test -n "$hardcode_libdir_flag_spec_ld"; then
-	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
-	    else
-	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
-	    fi
-	  fi
-	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
-	    # We should set the runpath_var.
-	    rpath=
-	    for dir in $perm_rpath; do
-	      rpath="$rpath$dir:"
-	    done
-	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
-	  fi
-	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
-	fi
-
-	shlibpath="$finalize_shlibpath"
-	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
-	if test -n "$shlibpath"; then
-	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
-	fi
-
-	# Get the real and link names of the library.
-	eval shared_ext=\"$shrext_cmds\"
-	eval library_names=\"$library_names_spec\"
-	set dummy $library_names
-	shift
-	realname="$1"
-	shift
-
-	if test -n "$soname_spec"; then
-	  eval soname=\"$soname_spec\"
-	else
-	  soname="$realname"
-	fi
-	if test -z "$dlname"; then
-	  dlname=$soname
-	fi
-
-	lib="$output_objdir/$realname"
-	linknames=
-	for link
-	do
-	  linknames="$linknames $link"
-	done
-
-	# Use standard objects if they are pic
-	test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-	test "X$libobjs" = "X " && libobjs=
-
-	delfiles=
-	if test -n "$export_symbols" && test -n "$include_expsyms"; then
-	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
-	  export_symbols="$output_objdir/$libname.uexp"
-	  delfiles="$delfiles $export_symbols"
-	fi
-
-	orig_export_symbols=
-	case $host_os in
-	cygwin* | mingw* | cegcc*)
-	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
-	    # exporting using user supplied symfile
-	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
-	      # and it's NOT already a .def file. Must figure out
-	      # which of the given symbols are data symbols and tag
-	      # them as such. So, trigger use of export_symbols_cmds.
-	      # export_symbols gets reassigned inside the "prepare
-	      # the list of exported symbols" if statement, so the
-	      # include_expsyms logic still works.
-	      orig_export_symbols="$export_symbols"
-	      export_symbols=
-	      always_export_symbols=yes
-	    fi
-	  fi
-	  ;;
-	esac
-
-	# Prepare the list of exported symbols
-	if test -z "$export_symbols"; then
-	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
-	    func_verbose "generating symbol list for \`$libname.la'"
-	    export_symbols="$output_objdir/$libname.exp"
-	    $opt_dry_run || $RM $export_symbols
-	    cmds=$export_symbols_cmds
-	    save_ifs="$IFS"; IFS='~'
-	    for cmd in $cmds; do
-	      IFS="$save_ifs"
-	      eval cmd=\"$cmd\"
-	      func_len " $cmd"
-	      len=$func_len_result
-	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-		func_show_eval "$cmd" 'exit $?'
-		skipped_export=false
-	      else
-		# The command line is too long to execute in one step.
-		func_verbose "using reloadable object file for export list..."
-		skipped_export=:
-		# Break out early, otherwise skipped_export may be
-		# set to false by a later but shorter cmd.
-		break
-	      fi
-	    done
-	    IFS="$save_ifs"
-	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
-	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
-	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
-	    fi
-	  fi
-	fi
-
-	if test -n "$export_symbols" && test -n "$include_expsyms"; then
-	  tmp_export_symbols="$export_symbols"
-	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
-	  $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
-	fi
-
-	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
-	  # The given exports_symbols file has to be filtered, so filter it.
-	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
-	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
-	  # 's' commands which not all seds can handle. GNU sed should be fine
-	  # though. Also, the filter scales superlinearly with the number of
-	  # global variables. join(1) would be nice here, but unfortunately
-	  # isn't a blessed tool.
-	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
-	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
-	  export_symbols=$output_objdir/$libname.def
-	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
-	fi
-
-	tmp_deplibs=
-	for test_deplib in $deplibs; do
-	  case " $convenience " in
-	  *" $test_deplib "*) ;;
-	  *)
-	    tmp_deplibs="$tmp_deplibs $test_deplib"
-	    ;;
-	  esac
-	done
-	deplibs="$tmp_deplibs"
-
-	if test -n "$convenience"; then
-	  if test -n "$whole_archive_flag_spec" &&
-	    test "$compiler_needs_object" = yes &&
-	    test -z "$libobjs"; then
-	    # extract the archives, so we have objects to list.
-	    # TODO: could optimize this to just extract one archive.
-	    whole_archive_flag_spec=
-	  fi
-	  if test -n "$whole_archive_flag_spec"; then
-	    save_libobjs=$libobjs
-	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
-	    test "X$libobjs" = "X " && libobjs=
-	  else
-	    gentop="$output_objdir/${outputname}x"
-	    generated="$generated $gentop"
-
-	    func_extract_archives $gentop $convenience
-	    libobjs="$libobjs $func_extract_archives_result"
-	    test "X$libobjs" = "X " && libobjs=
-	  fi
-	fi
-
-	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
-	  eval flag=\"$thread_safe_flag_spec\"
-	  linker_flags="$linker_flags $flag"
-	fi
-
-	# Make a backup of the uninstalled library when relinking
-	if test "$mode" = relink; then
-	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
-	fi
-
-	# Do each of the archive commands.
-	if test "$module" = yes && test -n "$module_cmds" ; then
-	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
-	    eval test_cmds=\"$module_expsym_cmds\"
-	    cmds=$module_expsym_cmds
-	  else
-	    eval test_cmds=\"$module_cmds\"
-	    cmds=$module_cmds
-	  fi
-	else
-	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-	    eval test_cmds=\"$archive_expsym_cmds\"
-	    cmds=$archive_expsym_cmds
-	  else
-	    eval test_cmds=\"$archive_cmds\"
-	    cmds=$archive_cmds
-	  fi
-	fi
-
-	if test "X$skipped_export" != "X:" &&
-	   func_len " $test_cmds" &&
-	   len=$func_len_result &&
-	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-	  :
-	else
-	  # The command line is too long to link in one step, link piecewise
-	  # or, if using GNU ld and skipped_export is not :, use a linker
-	  # script.
-
-	  # Save the value of $output and $libobjs because we want to
-	  # use them later.  If we have whole_archive_flag_spec, we
-	  # want to use save_libobjs as it was before
-	  # whole_archive_flag_spec was expanded, because we can't
-	  # assume the linker understands whole_archive_flag_spec.
-	  # This may have to be revisited, in case too many
-	  # convenience libraries get linked in and end up exceeding
-	  # the spec.
-	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
-	    save_libobjs=$libobjs
-	  fi
-	  save_output=$output
-	  output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
-
-	  # Clear the reloadable object creation command queue and
-	  # initialize k to one.
-	  test_cmds=
-	  concat_cmds=
-	  objlist=
-	  last_robj=
-	  k=1
-
-	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
-	    output=${output_objdir}/${output_la}.lnkscript
-	    func_verbose "creating GNU ld script: $output"
-	    $ECHO 'INPUT (' > $output
-	    for obj in $save_libobjs
-	    do
-	      $ECHO "$obj" >> $output
-	    done
-	    $ECHO ')' >> $output
-	    delfiles="$delfiles $output"
-	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
-	    output=${output_objdir}/${output_la}.lnk
-	    func_verbose "creating linker input file list: $output"
-	    : > $output
-	    set x $save_libobjs
-	    shift
-	    firstobj=
-	    if test "$compiler_needs_object" = yes; then
-	      firstobj="$1 "
-	      shift
-	    fi
-	    for obj
-	    do
-	      $ECHO "$obj" >> $output
-	    done
-	    delfiles="$delfiles $output"
-	    output=$firstobj\"$file_list_spec$output\"
-	  else
-	    if test -n "$save_libobjs"; then
-	      func_verbose "creating reloadable object files..."
-	      output=$output_objdir/$output_la-${k}.$objext
-	      eval test_cmds=\"$reload_cmds\"
-	      func_len " $test_cmds"
-	      len0=$func_len_result
-	      len=$len0
-
-	      # Loop over the list of objects to be linked.
-	      for obj in $save_libobjs
-	      do
-		func_len " $obj"
-		func_arith $len + $func_len_result
-		len=$func_arith_result
-		if test "X$objlist" = X ||
-		   test "$len" -lt "$max_cmd_len"; then
-		  func_append objlist " $obj"
-		else
-		  # The command $test_cmds is almost too long, add a
-		  # command to the queue.
-		  if test "$k" -eq 1 ; then
-		    # The first file doesn't have a previous command to add.
-		    eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
-		  else
-		    # All subsequent reloadable object files will link in
-		    # the last one created.
-		    eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
-		  fi
-		  last_robj=$output_objdir/$output_la-${k}.$objext
-		  func_arith $k + 1
-		  k=$func_arith_result
-		  output=$output_objdir/$output_la-${k}.$objext
-		  objlist=$obj
-		  func_len " $last_robj"
-		  func_arith $len0 + $func_len_result
-		  len=$func_arith_result
-		fi
-	      done
-	      # Handle the remaining objects by creating one last
-	      # reloadable object file.  All subsequent reloadable object
-	      # files will link in the last one created.
-	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-	      eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
-	      if test -n "$last_robj"; then
-	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
-	      fi
-	      delfiles="$delfiles $output"
-
-	    else
-	      output=
-	    fi
-
-	    if ${skipped_export-false}; then
-	      func_verbose "generating symbol list for \`$libname.la'"
-	      export_symbols="$output_objdir/$libname.exp"
-	      $opt_dry_run || $RM $export_symbols
-	      libobjs=$output
-	      # Append the command to create the export file.
-	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
-	      if test -n "$last_robj"; then
-		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
-	      fi
-	    fi
-
-	    test -n "$save_libobjs" &&
-	      func_verbose "creating a temporary reloadable object file: $output"
-
-	    # Loop through the commands generated above and execute them.
-	    save_ifs="$IFS"; IFS='~'
-	    for cmd in $concat_cmds; do
-	      IFS="$save_ifs"
-	      $opt_silent || {
-		  func_quote_for_expand "$cmd"
-		  eval "func_echo $func_quote_for_expand_result"
-	      }
-	      $opt_dry_run || eval "$cmd" || {
-		lt_exit=$?
-
-		# Restore the uninstalled library and exit
-		if test "$mode" = relink; then
-		  ( cd "$output_objdir" && \
-		    $RM "${realname}T" && \
-		    $MV "${realname}U" "$realname" )
-		fi
-
-		exit $lt_exit
-	      }
-	    done
-	    IFS="$save_ifs"
-
-	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
-	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
-	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
-	    fi
-	  fi
-
-          if ${skipped_export-false}; then
-	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
-	      tmp_export_symbols="$export_symbols"
-	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
-	      $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
-	    fi
-
-	    if test -n "$orig_export_symbols"; then
-	      # The given exports_symbols file has to be filtered, so filter it.
-	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
-	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
-	      # 's' commands which not all seds can handle. GNU sed should be fine
-	      # though. Also, the filter scales superlinearly with the number of
-	      # global variables. join(1) would be nice here, but unfortunately
-	      # isn't a blessed tool.
-	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
-	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
-	      export_symbols=$output_objdir/$libname.def
-	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
-	    fi
-	  fi
-
-	  libobjs=$output
-	  # Restore the value of output.
-	  output=$save_output
-
-	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
-	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
-	    test "X$libobjs" = "X " && libobjs=
-	  fi
-	  # Expand the library linking commands again to reset the
-	  # value of $libobjs for piecewise linking.
-
-	  # Do each of the archive commands.
-	  if test "$module" = yes && test -n "$module_cmds" ; then
-	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
-	      cmds=$module_expsym_cmds
-	    else
-	      cmds=$module_cmds
-	    fi
-	  else
-	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-	      cmds=$archive_expsym_cmds
-	    else
-	      cmds=$archive_cmds
-	    fi
-	  fi
-	fi
-
-	if test -n "$delfiles"; then
-	  # Append the command to remove temporary files to $cmds.
-	  eval cmds=\"\$cmds~\$RM $delfiles\"
-	fi
-
-	# Add any objects from preloaded convenience libraries
-	if test -n "$dlprefiles"; then
-	  gentop="$output_objdir/${outputname}x"
-	  generated="$generated $gentop"
-
-	  func_extract_archives $gentop $dlprefiles
-	  libobjs="$libobjs $func_extract_archives_result"
-	  test "X$libobjs" = "X " && libobjs=
-	fi
-
-	save_ifs="$IFS"; IFS='~'
-	for cmd in $cmds; do
-	  IFS="$save_ifs"
-	  eval cmd=\"$cmd\"
-	  $opt_silent || {
-	    func_quote_for_expand "$cmd"
-	    eval "func_echo $func_quote_for_expand_result"
-	  }
-	  $opt_dry_run || eval "$cmd" || {
-	    lt_exit=$?
-
-	    # Restore the uninstalled library and exit
-	    if test "$mode" = relink; then
-	      ( cd "$output_objdir" && \
-	        $RM "${realname}T" && \
-		$MV "${realname}U" "$realname" )
-	    fi
-
-	    exit $lt_exit
-	  }
-	done
-	IFS="$save_ifs"
-
-	# Restore the uninstalled library and exit
-	if test "$mode" = relink; then
-	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
-
-	  if test -n "$convenience"; then
-	    if test -z "$whole_archive_flag_spec"; then
-	      func_show_eval '${RM}r "$gentop"'
-	    fi
-	  fi
-
-	  exit $EXIT_SUCCESS
-	fi
-
-	# Create links to the real library.
-	for linkname in $linknames; do
-	  if test "$realname" != "$linkname"; then
-	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
-	  fi
-	done
-
-	# If -module or -export-dynamic was specified, set the dlname.
-	if test "$module" = yes || test "$export_dynamic" = yes; then
-	  # On all known operating systems, these are identical.
-	  dlname="$soname"
-	fi
-      fi
-      ;;
-
-    obj)
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-	func_warning "\`-dlopen' is ignored for objects"
-      fi
-
-      case " $deplibs" in
-      *\ -l* | *\ -L*)
-	func_warning "\`-l' and \`-L' are ignored for objects" ;;
-      esac
-
-      test -n "$rpath" && \
-	func_warning "\`-rpath' is ignored for objects"
-
-      test -n "$xrpath" && \
-	func_warning "\`-R' is ignored for objects"
-
-      test -n "$vinfo" && \
-	func_warning "\`-version-info' is ignored for objects"
-
-      test -n "$release" && \
-	func_warning "\`-release' is ignored for objects"
-
-      case $output in
-      *.lo)
-	test -n "$objs$old_deplibs" && \
-	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
-
-	libobj=$output
-	func_lo2o "$libobj"
-	obj=$func_lo2o_result
-	;;
-      *)
-	libobj=
-	obj="$output"
-	;;
-      esac
-
-      # Delete the old objects.
-      $opt_dry_run || $RM $obj $libobj
-
-      # Objects from convenience libraries.  This assumes
-      # single-version convenience libraries.  Whenever we create
-      # different ones for PIC/non-PIC, this we'll have to duplicate
-      # the extraction.
-      reload_conv_objs=
-      gentop=
-      # reload_cmds runs $LD directly, so let us get rid of
-      # -Wl from whole_archive_flag_spec and hope we can get by with
-      # turning comma into space..
-      wl=
-
-      if test -n "$convenience"; then
-	if test -n "$whole_archive_flag_spec"; then
-	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
-	  reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
-	else
-	  gentop="$output_objdir/${obj}x"
-	  generated="$generated $gentop"
-
-	  func_extract_archives $gentop $convenience
-	  reload_conv_objs="$reload_objs $func_extract_archives_result"
-	fi
-      fi
-
-      # Create the old-style object.
-      reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
-
-      output="$obj"
-      func_execute_cmds "$reload_cmds" 'exit $?'
-
-      # Exit if we aren't doing a library object file.
-      if test -z "$libobj"; then
-	if test -n "$gentop"; then
-	  func_show_eval '${RM}r "$gentop"'
-	fi
-
-	exit $EXIT_SUCCESS
-      fi
-
-      if test "$build_libtool_libs" != yes; then
-	if test -n "$gentop"; then
-	  func_show_eval '${RM}r "$gentop"'
-	fi
-
-	# Create an invalid libtool object if no PIC, so that we don't
-	# accidentally link it into a program.
-	# $show "echo timestamp > $libobj"
-	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
-	exit $EXIT_SUCCESS
-      fi
-
-      if test -n "$pic_flag" || test "$pic_mode" != default; then
-	# Only do commands if we really have different PIC objects.
-	reload_objs="$libobjs $reload_conv_objs"
-	output="$libobj"
-	func_execute_cmds "$reload_cmds" 'exit $?'
-      fi
-
-      if test -n "$gentop"; then
-	func_show_eval '${RM}r "$gentop"'
-      fi
-
-      exit $EXIT_SUCCESS
-      ;;
-
-    prog)
-      case $host in
-	*cygwin*) func_stripname '' '.exe' "$output"
-	          output=$func_stripname_result.exe;;
-      esac
-      test -n "$vinfo" && \
-	func_warning "\`-version-info' is ignored for programs"
-
-      test -n "$release" && \
-	func_warning "\`-release' is ignored for programs"
-
-      test "$preload" = yes \
-        && test "$dlopen_support" = unknown \
-	&& test "$dlopen_self" = unknown \
-	&& test "$dlopen_self_static" = unknown && \
-	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
-
-      case $host in
-      *-*-rhapsody* | *-*-darwin1.[012])
-	# On Rhapsody replace the C library is the System framework
-	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
-	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
-	;;
-      esac
-
-      case $host in
-      *-*-darwin*)
-	# Don't allow lazy linking, it breaks C++ global constructors
-	# But is supposedly fixed on 10.4 or later (yay!).
-	if test "$tagname" = CXX ; then
-	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
-	    10.[0123])
-	      compile_command="$compile_command ${wl}-bind_at_load"
-	      finalize_command="$finalize_command ${wl}-bind_at_load"
-	    ;;
-	  esac
-	fi
-	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
-	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	;;
-      esac
-
-
-      # move library search paths that coincide with paths to not yet
-      # installed libraries to the beginning of the library search list
-      new_libs=
-      for path in $notinst_path; do
-	case " $new_libs " in
-	*" -L$path/$objdir "*) ;;
-	*)
-	  case " $compile_deplibs " in
-	  *" -L$path/$objdir "*)
-	    new_libs="$new_libs -L$path/$objdir" ;;
-	  esac
-	  ;;
-	esac
-      done
-      for deplib in $compile_deplibs; do
-	case $deplib in
-	-L*)
-	  case " $new_libs " in
-	  *" $deplib "*) ;;
-	  *) new_libs="$new_libs $deplib" ;;
-	  esac
-	  ;;
-	*) new_libs="$new_libs $deplib" ;;
-	esac
-      done
-      compile_deplibs="$new_libs"
-
-
-      compile_command="$compile_command $compile_deplibs"
-      finalize_command="$finalize_command $finalize_deplibs"
-
-      if test -n "$rpath$xrpath"; then
-	# If the user specified any rpath flags, then add them.
-	for libdir in $rpath $xrpath; do
-	  # This is the magic to use -rpath.
-	  case "$finalize_rpath " in
-	  *" $libdir "*) ;;
-	  *) finalize_rpath="$finalize_rpath $libdir" ;;
-	  esac
-	done
-      fi
-
-      # Now hardcode the library paths
-      rpath=
-      hardcode_libdirs=
-      for libdir in $compile_rpath $finalize_rpath; do
-	if test -n "$hardcode_libdir_flag_spec"; then
-	  if test -n "$hardcode_libdir_separator"; then
-	    if test -z "$hardcode_libdirs"; then
-	      hardcode_libdirs="$libdir"
-	    else
-	      # Just accumulate the unique libdirs.
-	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-		;;
-	      *)
-		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
-		;;
-	      esac
-	    fi
-	  else
-	    eval flag=\"$hardcode_libdir_flag_spec\"
-	    rpath="$rpath $flag"
-	  fi
-	elif test -n "$runpath_var"; then
-	  case "$perm_rpath " in
-	  *" $libdir "*) ;;
-	  *) perm_rpath="$perm_rpath $libdir" ;;
-	  esac
-	fi
-	case $host in
-	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
-	  case :$dllsearchpath: in
-	  *":$libdir:"*) ;;
-	  ::) dllsearchpath=$libdir;;
-	  *) dllsearchpath="$dllsearchpath:$libdir";;
-	  esac
-	  case :$dllsearchpath: in
-	  *":$testbindir:"*) ;;
-	  ::) dllsearchpath=$testbindir;;
-	  *) dllsearchpath="$dllsearchpath:$testbindir";;
-	  esac
-	  ;;
-	esac
-      done
-      # Substitute the hardcoded libdirs into the rpath.
-      if test -n "$hardcode_libdir_separator" &&
-	 test -n "$hardcode_libdirs"; then
-	libdir="$hardcode_libdirs"
-	eval rpath=\" $hardcode_libdir_flag_spec\"
-      fi
-      compile_rpath="$rpath"
-
-      rpath=
-      hardcode_libdirs=
-      for libdir in $finalize_rpath; do
-	if test -n "$hardcode_libdir_flag_spec"; then
-	  if test -n "$hardcode_libdir_separator"; then
-	    if test -z "$hardcode_libdirs"; then
-	      hardcode_libdirs="$libdir"
-	    else
-	      # Just accumulate the unique libdirs.
-	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-		;;
-	      *)
-		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
-		;;
-	      esac
-	    fi
-	  else
-	    eval flag=\"$hardcode_libdir_flag_spec\"
-	    rpath="$rpath $flag"
-	  fi
-	elif test -n "$runpath_var"; then
-	  case "$finalize_perm_rpath " in
-	  *" $libdir "*) ;;
-	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
-	  esac
-	fi
-      done
-      # Substitute the hardcoded libdirs into the rpath.
-      if test -n "$hardcode_libdir_separator" &&
-	 test -n "$hardcode_libdirs"; then
-	libdir="$hardcode_libdirs"
-	eval rpath=\" $hardcode_libdir_flag_spec\"
-      fi
-      finalize_rpath="$rpath"
-
-      if test -n "$libobjs" && test "$build_old_libs" = yes; then
-	# Transform all the library objects into standard objects.
-	compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-	finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-      fi
-
-      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
-
-      # template prelinking step
-      if test -n "$prelink_cmds"; then
-	func_execute_cmds "$prelink_cmds" 'exit $?'
-      fi
-
-      wrappers_required=yes
-      case $host in
-      *cygwin* | *mingw* )
-        if test "$build_libtool_libs" != yes; then
-          wrappers_required=no
-        fi
-        ;;
-      *cegcc)
-        # Disable wrappers for cegcc, we are cross compiling anyway.
-        wrappers_required=no
-        ;;
-      *)
-        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
-          wrappers_required=no
-        fi
-        ;;
-      esac
-      if test "$wrappers_required" = no; then
-	# Replace the output file specification.
-	compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
-	link_command="$compile_command$compile_rpath"
-
-	# We have no uninstalled library dependencies, so finalize right now.
-	exit_status=0
-	func_show_eval "$link_command" 'exit_status=$?'
-
-	# Delete the generated files.
-	if test -f "$output_objdir/${outputname}S.${objext}"; then
-	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
-	fi
-
-	exit $exit_status
-      fi
-
-      if test -n "$compile_shlibpath$finalize_shlibpath"; then
-	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
-      fi
-      if test -n "$finalize_shlibpath"; then
-	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
-      fi
-
-      compile_var=
-      finalize_var=
-      if test -n "$runpath_var"; then
-	if test -n "$perm_rpath"; then
-	  # We should set the runpath_var.
-	  rpath=
-	  for dir in $perm_rpath; do
-	    rpath="$rpath$dir:"
-	  done
-	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
-	fi
-	if test -n "$finalize_perm_rpath"; then
-	  # We should set the runpath_var.
-	  rpath=
-	  for dir in $finalize_perm_rpath; do
-	    rpath="$rpath$dir:"
-	  done
-	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
-	fi
-      fi
-
-      if test "$no_install" = yes; then
-	# We don't need to create a wrapper script.
-	link_command="$compile_var$compile_command$compile_rpath"
-	# Replace the output file specification.
-	link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
-	# Delete the old output file.
-	$opt_dry_run || $RM $output
-	# Link the executable and exit
-	func_show_eval "$link_command" 'exit $?'
-	exit $EXIT_SUCCESS
-      fi
-
-      if test "$hardcode_action" = relink; then
-	# Fast installation is not supported
-	link_command="$compile_var$compile_command$compile_rpath"
-	relink_command="$finalize_var$finalize_command$finalize_rpath"
-
-	func_warning "this platform does not like uninstalled shared libraries"
-	func_warning "\`$output' will be relinked during installation"
-      else
-	if test "$fast_install" != no; then
-	  link_command="$finalize_var$compile_command$finalize_rpath"
-	  if test "$fast_install" = yes; then
-	    relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
-	  else
-	    # fast_install is set to needless
-	    relink_command=
-	  fi
-	else
-	  link_command="$compile_var$compile_command$compile_rpath"
-	  relink_command="$finalize_var$finalize_command$finalize_rpath"
-	fi
-      fi
-
-      # Replace the output file specification.
-      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
-
-      # Delete the old output files.
-      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
-
-      func_show_eval "$link_command" 'exit $?'
-
-      # Now create the wrapper script.
-      func_verbose "creating $output"
-
-      # Quote the relink command for shipping.
-      if test -n "$relink_command"; then
-	# Preserve any variables that may affect compiler behavior
-	for var in $variables_saved_for_relink; do
-	  if eval test -z \"\${$var+set}\"; then
-	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
-	  elif eval var_value=\$$var; test -z "$var_value"; then
-	    relink_command="$var=; export $var; $relink_command"
-	  else
-	    func_quote_for_eval "$var_value"
-	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
-	  fi
-	done
-	relink_command="(cd `pwd`; $relink_command)"
-	relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
-      fi
-
-      # Quote $ECHO for shipping.
-      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
-	case $progpath in
-	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
-	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
-	esac
-	qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
-      else
-	qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
-      fi
-
-      # Only actually do things if not in dry run mode.
-      $opt_dry_run || {
-	# win32 will think the script is a binary if it has
-	# a .exe suffix, so we strip it off here.
-	case $output in
-	  *.exe) func_stripname '' '.exe' "$output"
-	         output=$func_stripname_result ;;
-	esac
-	# test for cygwin because mv fails w/o .exe extensions
-	case $host in
-	  *cygwin*)
-	    exeext=.exe
-	    func_stripname '' '.exe' "$outputname"
-	    outputname=$func_stripname_result ;;
-	  *) exeext= ;;
-	esac
-	case $host in
-	  *cygwin* | *mingw* )
-	    func_dirname_and_basename "$output" "" "."
-	    output_name=$func_basename_result
-	    output_path=$func_dirname_result
-	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
-	    cwrapper="$output_path/$output_name.exe"
-	    $RM $cwrappersource $cwrapper
-	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
-
-	    func_emit_cwrapperexe_src > $cwrappersource
-
-	    # The wrapper executable is built using the $host compiler,
-	    # because it contains $host paths and files. If cross-
-	    # compiling, it, like the target executable, must be
-	    # executed on the $host or under an emulation environment.
-	    $opt_dry_run || {
-	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
-	      $STRIP $cwrapper
-	    }
-
-	    # Now, create the wrapper script for func_source use:
-	    func_ltwrapper_scriptname $cwrapper
-	    $RM $func_ltwrapper_scriptname_result
-	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
-	    $opt_dry_run || {
-	      # note: this script will not be executed, so do not chmod.
-	      if test "x$build" = "x$host" ; then
-		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
-	      else
-		func_emit_wrapper no > $func_ltwrapper_scriptname_result
-	      fi
-	    }
-	  ;;
-	  * )
-	    $RM $output
-	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
-
-	    func_emit_wrapper no > $output
-	    chmod +x $output
-	  ;;
-	esac
-      }
-      exit $EXIT_SUCCESS
-      ;;
-    esac
-
-    # See if we need to build an old-fashioned archive.
-    for oldlib in $oldlibs; do
-
-      if test "$build_libtool_libs" = convenience; then
-	oldobjs="$libobjs_save $symfileobj"
-	addlibs="$convenience"
-	build_libtool_libs=no
-      else
-	if test "$build_libtool_libs" = module; then
-	  oldobjs="$libobjs_save"
-	  build_libtool_libs=no
-	else
-	  oldobjs="$old_deplibs $non_pic_objects"
-	  if test "$preload" = yes && test -f "$symfileobj"; then
-	    oldobjs="$oldobjs $symfileobj"
-	  fi
-	fi
-	addlibs="$old_convenience"
-      fi
-
-      if test -n "$addlibs"; then
-	gentop="$output_objdir/${outputname}x"
-	generated="$generated $gentop"
-
-	func_extract_archives $gentop $addlibs
-	oldobjs="$oldobjs $func_extract_archives_result"
-      fi
-
-      # Do each command in the archive commands.
-      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
-	cmds=$old_archive_from_new_cmds
-      else
-
-	# Add any objects from preloaded convenience libraries
-	if test -n "$dlprefiles"; then
-	  gentop="$output_objdir/${outputname}x"
-	  generated="$generated $gentop"
-
-	  func_extract_archives $gentop $dlprefiles
-	  oldobjs="$oldobjs $func_extract_archives_result"
-	fi
-
-	# POSIX demands no paths to be encoded in archives.  We have
-	# to avoid creating archives with duplicate basenames if we
-	# might have to extract them afterwards, e.g., when creating a
-	# static archive out of a convenience library, or when linking
-	# the entirety of a libtool archive into another (currently
-	# not supported by libtool).
-	if (for obj in $oldobjs
-	    do
-	      func_basename "$obj"
-	      $ECHO "$func_basename_result"
-	    done | sort | sort -uc >/dev/null 2>&1); then
-	  :
-	else
-	  $ECHO "copying selected object files to avoid basename conflicts..."
-	  gentop="$output_objdir/${outputname}x"
-	  generated="$generated $gentop"
-	  func_mkdir_p "$gentop"
-	  save_oldobjs=$oldobjs
-	  oldobjs=
-	  counter=1
-	  for obj in $save_oldobjs
-	  do
-	    func_basename "$obj"
-	    objbase="$func_basename_result"
-	    case " $oldobjs " in
-	    " ") oldobjs=$obj ;;
-	    *[\ /]"$objbase "*)
-	      while :; do
-		# Make sure we don't pick an alternate name that also
-		# overlaps.
-		newobj=lt$counter-$objbase
-		func_arith $counter + 1
-		counter=$func_arith_result
-		case " $oldobjs " in
-		*[\ /]"$newobj "*) ;;
-		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
-		esac
-	      done
-	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
-	      oldobjs="$oldobjs $gentop/$newobj"
-	      ;;
-	    *) oldobjs="$oldobjs $obj" ;;
-	    esac
-	  done
-	fi
-	eval cmds=\"$old_archive_cmds\"
-
-	func_len " $cmds"
-	len=$func_len_result
-	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-	  cmds=$old_archive_cmds
-	else
-	  # the command line is too long to link in one step, link in parts
-	  func_verbose "using piecewise archive linking..."
-	  save_RANLIB=$RANLIB
-	  RANLIB=:
-	  objlist=
-	  concat_cmds=
-	  save_oldobjs=$oldobjs
-	  oldobjs=
-	  # Is there a better way of finding the last object in the list?
-	  for obj in $save_oldobjs
-	  do
-	    last_oldobj=$obj
-	  done
-	  eval test_cmds=\"$old_archive_cmds\"
-	  func_len " $test_cmds"
-	  len0=$func_len_result
-	  len=$len0
-	  for obj in $save_oldobjs
-	  do
-	    func_len " $obj"
-	    func_arith $len + $func_len_result
-	    len=$func_arith_result
-	    func_append objlist " $obj"
-	    if test "$len" -lt "$max_cmd_len"; then
-	      :
-	    else
-	      # the above command should be used before it gets too long
-	      oldobjs=$objlist
-	      if test "$obj" = "$last_oldobj" ; then
-		RANLIB=$save_RANLIB
-	      fi
-	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
-	      objlist=
-	      len=$len0
-	    fi
-	  done
-	  RANLIB=$save_RANLIB
-	  oldobjs=$objlist
-	  if test "X$oldobjs" = "X" ; then
-	    eval cmds=\"\$concat_cmds\"
-	  else
-	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
-	  fi
-	fi
-      fi
-      func_execute_cmds "$cmds" 'exit $?'
-    done
-
-    test -n "$generated" && \
-      func_show_eval "${RM}r$generated"
-
-    # Now create the libtool archive.
-    case $output in
-    *.la)
-      old_library=
-      test "$build_old_libs" = yes && old_library="$libname.$libext"
-      func_verbose "creating $output"
-
-      # Preserve any variables that may affect compiler behavior
-      for var in $variables_saved_for_relink; do
-	if eval test -z \"\${$var+set}\"; then
-	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
-	elif eval var_value=\$$var; test -z "$var_value"; then
-	  relink_command="$var=; export $var; $relink_command"
-	else
-	  func_quote_for_eval "$var_value"
-	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
-	fi
-      done
-      # Quote the link command for shipping.
-      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
-      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
-      if test "$hardcode_automatic" = yes ; then
-	relink_command=
-      fi
-
-      # Only create the output if not a dry run.
-      $opt_dry_run || {
-	for installed in no yes; do
-	  if test "$installed" = yes; then
-	    if test -z "$install_libdir"; then
-	      break
-	    fi
-	    output="$output_objdir/$outputname"i
-	    # Replace all uninstalled libtool libraries with the installed ones
-	    newdependency_libs=
-	    for deplib in $dependency_libs; do
-	      case $deplib in
-	      *.la)
-		func_basename "$deplib"
-		name="$func_basename_result"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-		test -z "$libdir" && \
-		  func_fatal_error "\`$deplib' is not a valid libtool archive"
-		newdependency_libs="$newdependency_libs $libdir/$name"
-		;;
-	      *) newdependency_libs="$newdependency_libs $deplib" ;;
-	      esac
-	    done
-	    dependency_libs="$newdependency_libs"
-	    newdlfiles=
-
-	    for lib in $dlfiles; do
-	      case $lib in
-	      *.la)
-	        func_basename "$lib"
-		name="$func_basename_result"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-		test -z "$libdir" && \
-		  func_fatal_error "\`$lib' is not a valid libtool archive"
-		newdlfiles="$newdlfiles $libdir/$name"
-		;;
-	      *) newdlfiles="$newdlfiles $lib" ;;
-	      esac
-	    done
-	    dlfiles="$newdlfiles"
-	    newdlprefiles=
-	    for lib in $dlprefiles; do
-	      case $lib in
-	      *.la)
-		# Only pass preopened files to the pseudo-archive (for
-		# eventual linking with the app. that links it) if we
-		# didn't already link the preopened objects directly into
-		# the library:
-		func_basename "$lib"
-		name="$func_basename_result"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-		test -z "$libdir" && \
-		  func_fatal_error "\`$lib' is not a valid libtool archive"
-		newdlprefiles="$newdlprefiles $libdir/$name"
-		;;
-	      esac
-	    done
-	    dlprefiles="$newdlprefiles"
-	  else
-	    newdlfiles=
-	    for lib in $dlfiles; do
-	      case $lib in
-		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
-		*) abs=`pwd`"/$lib" ;;
-	      esac
-	      newdlfiles="$newdlfiles $abs"
-	    done
-	    dlfiles="$newdlfiles"
-	    newdlprefiles=
-	    for lib in $dlprefiles; do
-	      case $lib in
-		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
-		*) abs=`pwd`"/$lib" ;;
-	      esac
-	      newdlprefiles="$newdlprefiles $abs"
-	    done
-	    dlprefiles="$newdlprefiles"
-	  fi
-	  $RM $output
-	  # place dlname in correct position for cygwin
-	  tdlname=$dlname
-	  case $host,$output,$installed,$module,$dlname in
-	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
-	  esac
-	  $ECHO > $output "\
-# $outputname - a libtool library file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname='$tdlname'
-
-# Names of this library.
-library_names='$library_names'
-
-# The name of the static archive.
-old_library='$old_library'
-
-# Linker flags that can not go in dependency_libs.
-inherited_linker_flags='$new_inherited_linker_flags'
-
-# Libraries that this one depends upon.
-dependency_libs='$dependency_libs'
-
-# Names of additional weak libraries provided by this library
-weak_library_names='$weak_libs'
-
-# Version information for $libname.
-current=$current
-age=$age
-revision=$revision
-
-# Is this an already installed library?
-installed=$installed
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=$module
-
-# Files to dlopen/dlpreopen
-dlopen='$dlfiles'
-dlpreopen='$dlprefiles'
-
-# Directory that this library needs to be installed in:
-libdir='$install_libdir'"
-	  if test "$installed" = no && test "$need_relink" = yes; then
-	    $ECHO >> $output "\
-relink_command=\"$relink_command\""
-	  fi
-	done
-      }
-
-      # Do a symbolic link so that the libtool archive can be found in
-      # LD_LIBRARY_PATH before the program is installed.
-      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
-      ;;
-    esac
-    exit $EXIT_SUCCESS
-}
-
-{ test "$mode" = link || test "$mode" = relink; } &&
-    func_mode_link ${1+"$@"}
-
-
-# func_mode_uninstall arg...
-func_mode_uninstall ()
-{
-    $opt_debug
-    RM="$nonopt"
-    files=
-    rmforce=
-    exit_status=0
-
-    # This variable tells wrapper scripts just to set variables rather
-    # than running their programs.
-    libtool_install_magic="$magic"
-
-    for arg
-    do
-      case $arg in
-      -f) RM="$RM $arg"; rmforce=yes ;;
-      -*) RM="$RM $arg" ;;
-      *) files="$files $arg" ;;
-      esac
-    done
-
-    test -z "$RM" && \
-      func_fatal_help "you must specify an RM program"
-
-    rmdirs=
-
-    origobjdir="$objdir"
-    for file in $files; do
-      func_dirname "$file" "" "."
-      dir="$func_dirname_result"
-      if test "X$dir" = X.; then
-	objdir="$origobjdir"
-      else
-	objdir="$dir/$origobjdir"
-      fi
-      func_basename "$file"
-      name="$func_basename_result"
-      test "$mode" = uninstall && objdir="$dir"
-
-      # Remember objdir for removal later, being careful to avoid duplicates
-      if test "$mode" = clean; then
-	case " $rmdirs " in
-	  *" $objdir "*) ;;
-	  *) rmdirs="$rmdirs $objdir" ;;
-	esac
-      fi
-
-      # Don't error if the file doesn't exist and rm -f was used.
-      if { test -L "$file"; } >/dev/null 2>&1 ||
-	 { test -h "$file"; } >/dev/null 2>&1 ||
-	 test -f "$file"; then
-	:
-      elif test -d "$file"; then
-	exit_status=1
-	continue
-      elif test "$rmforce" = yes; then
-	continue
-      fi
-
-      rmfiles="$file"
-
-      case $name in
-      *.la)
-	# Possibly a libtool archive, so verify it.
-	if func_lalib_p "$file"; then
-	  func_source $dir/$name
-
-	  # Delete the libtool libraries and symlinks.
-	  for n in $library_names; do
-	    rmfiles="$rmfiles $objdir/$n"
-	  done
-	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
-
-	  case "$mode" in
-	  clean)
-	    case "  $library_names " in
-	    # "  " in the beginning catches empty $dlname
-	    *" $dlname "*) ;;
-	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
-	    esac
-	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
-	    ;;
-	  uninstall)
-	    if test -n "$library_names"; then
-	      # Do each command in the postuninstall commands.
-	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
-	    fi
-
-	    if test -n "$old_library"; then
-	      # Do each command in the old_postuninstall commands.
-	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
-	    fi
-	    # FIXME: should reinstall the best remaining shared library.
-	    ;;
-	  esac
-	fi
-	;;
-
-      *.lo)
-	# Possibly a libtool object, so verify it.
-	if func_lalib_p "$file"; then
-
-	  # Read the .lo file
-	  func_source $dir/$name
-
-	  # Add PIC object to the list of files to remove.
-	  if test -n "$pic_object" &&
-	     test "$pic_object" != none; then
-	    rmfiles="$rmfiles $dir/$pic_object"
-	  fi
-
-	  # Add non-PIC object to the list of files to remove.
-	  if test -n "$non_pic_object" &&
-	     test "$non_pic_object" != none; then
-	    rmfiles="$rmfiles $dir/$non_pic_object"
-	  fi
-	fi
-	;;
-
-      *)
-	if test "$mode" = clean ; then
-	  noexename=$name
-	  case $file in
-	  *.exe)
-	    func_stripname '' '.exe' "$file"
-	    file=$func_stripname_result
-	    func_stripname '' '.exe' "$name"
-	    noexename=$func_stripname_result
-	    # $file with .exe has already been added to rmfiles,
-	    # add $file without .exe
-	    rmfiles="$rmfiles $file"
-	    ;;
-	  esac
-	  # Do a test to see if this is a libtool program.
-	  if func_ltwrapper_p "$file"; then
-	    if func_ltwrapper_executable_p "$file"; then
-	      func_ltwrapper_scriptname "$file"
-	      relink_command=
-	      func_source $func_ltwrapper_scriptname_result
-	      rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
-	    else
-	      relink_command=
-	      func_source $dir/$noexename
-	    fi
-
-	    # note $name still contains .exe if it was in $file originally
-	    # as does the version of $file that was added into $rmfiles
-	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
-	    if test "$fast_install" = yes && test -n "$relink_command"; then
-	      rmfiles="$rmfiles $objdir/lt-$name"
-	    fi
-	    if test "X$noexename" != "X$name" ; then
-	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
-	    fi
-	  fi
-	fi
-	;;
-      esac
-      func_show_eval "$RM $rmfiles" 'exit_status=1'
-    done
-    objdir="$origobjdir"
-
-    # Try to remove the ${objdir}s in the directories where we deleted files
-    for dir in $rmdirs; do
-      if test -d "$dir"; then
-	func_show_eval "rmdir $dir >/dev/null 2>&1"
-      fi
-    done
-
-    exit $exit_status
-}
-
-{ test "$mode" = uninstall || test "$mode" = clean; } &&
-    func_mode_uninstall ${1+"$@"}
-
-test -z "$mode" && {
-  help="$generic_help"
-  func_fatal_help "you must specify a MODE"
-}
-
-test -z "$exec_cmd" && \
-  func_fatal_help "invalid operation mode \`$mode'"
-
-if test -n "$exec_cmd"; then
-  eval exec "$exec_cmd"
-  exit $EXIT_FAILURE
-fi
-
-exit $exit_status
-
-
-# The TAGs below are defined such that we never get into a situation
-# in which we disable both kinds of libraries.  Given conflicting
-# choices, we go for a static library, that is the most portable,
-# since we can't tell whether shared libraries were disabled because
-# the user asked for that or because the platform doesn't support
-# them.  This is particularly important on AIX, because we don't
-# support having both static and shared libraries enabled at the same
-# time on that platform, so we default to a shared-only configuration.
-# If a disable-shared tag is given, we'll fallback to a static-only
-# configuration.  But we'll never go from static-only to shared-only.
-
-# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
-build_libtool_libs=no
-build_old_libs=yes
-# ### END LIBTOOL TAG CONFIG: disable-shared
-
-# ### BEGIN LIBTOOL TAG CONFIG: disable-static
-build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
-# ### END LIBTOOL TAG CONFIG: disable-static
-
-# Local Variables:
-# mode:shell-script
-# sh-indentation:2
-# End:
-# vi:sw=2
-
diff --git a/yaml-0.1.3/config/missing b/yaml-0.1.3/config/missing
deleted file mode 100755
index 1c8ff70..0000000
--- a/yaml-0.1.3/config/missing
+++ /dev/null
@@ -1,367 +0,0 @@
-#! /bin/sh
-# Common stub for a few missing GNU programs while installing.
-
-scriptversion=2006-05-10.23
-
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
-#   Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-if test $# -eq 0; then
-  echo 1>&2 "Try \`$0 --help' for more information"
-  exit 1
-fi
-
-run=:
-sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
-sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
-
-# In the cases where this matters, `missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
-  configure_ac=configure.ac
-else
-  configure_ac=configure.in
-fi
-
-msg="missing on your system"
-
-case $1 in
---run)
-  # Try to run requested program, and just exit if it succeeds.
-  run=
-  shift
-  "$@" && exit 0
-  # Exit code 63 means version mismatch.  This often happens
-  # when the user try to use an ancient version of a tool on
-  # a file that requires a minimum version.  In this case we
-  # we should proceed has if the program had been absent, or
-  # if --run hadn't been passed.
-  if test $? = 63; then
-    run=:
-    msg="probably too old"
-  fi
-  ;;
-
-  -h|--h|--he|--hel|--help)
-    echo "\
-$0 [OPTION]... PROGRAM [ARGUMENT]...
-
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
-
-Options:
-  -h, --help      display this help and exit
-  -v, --version   output version information and exit
-  --run           try to run the given command, and emulate it if it fails
-
-Supported PROGRAM values:
-  aclocal      touch file \`aclocal.m4'
-  autoconf     touch file \`configure'
-  autoheader   touch file \`config.h.in'
-  autom4te     touch the output file, or create a stub one
-  automake     touch all \`Makefile.in' files
-  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
-  flex         create \`lex.yy.c', if possible, from existing .c
-  help2man     touch the output file
-  lex          create \`lex.yy.c', if possible, from existing .c
-  makeinfo     touch the output file
-  tar          try tar, gnutar, gtar, then tar without non-portable flags
-  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
-
-Send bug reports to <bug-automake@gnu.org>."
-    exit $?
-    ;;
-
-  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
-    echo "missing $scriptversion (GNU Automake)"
-    exit $?
-    ;;
-
-  -*)
-    echo 1>&2 "$0: Unknown \`$1' option"
-    echo 1>&2 "Try \`$0 --help' for more information"
-    exit 1
-    ;;
-
-esac
-
-# Now exit if we have it, but it failed.  Also exit now if we
-# don't have it and --version was passed (most likely to detect
-# the program).
-case $1 in
-  lex|yacc)
-    # Not GNU programs, they don't have --version.
-    ;;
-
-  tar)
-    if test -n "$run"; then
-       echo 1>&2 "ERROR: \`tar' requires --run"
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       exit 1
-    fi
-    ;;
-
-  *)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       # Could not run --version or --help.  This is probably someone
-       # running `$TOOL --version' or `$TOOL --help' to check whether
-       # $TOOL exists and not knowing $TOOL uses missing.
-       exit 1
-    fi
-    ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case $1 in
-  aclocal*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
-         to install the \`Automake' and \`Perl' packages.  Grab them from
-         any GNU archive site."
-    touch aclocal.m4
-    ;;
-
-  autoconf)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`${configure_ac}'.  You might want to install the
-         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
-         archive site."
-    touch configure
-    ;;
-
-  autoheader)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
-         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
-         from any GNU archive site."
-    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
-    test -z "$files" && files="config.h"
-    touch_files=
-    for f in $files; do
-      case $f in
-      *:*) touch_files="$touch_files "`echo "$f" |
-				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
-      *) touch_files="$touch_files $f.in";;
-      esac
-    done
-    touch $touch_files
-    ;;
-
-  automake*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
-         You might want to install the \`Automake' and \`Perl' packages.
-         Grab them from any GNU archive site."
-    find . -type f -name Makefile.am -print |
-	   sed 's/\.am$/.in/' |
-	   while read f; do touch "$f"; done
-    ;;
-
-  autom4te)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, but is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.
-         You can get \`$1' as part of \`Autoconf' from any GNU
-         archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-	touch $file
-    else
-	test -z "$file" || exec >$file
-	echo "#! /bin/sh"
-	echo "# Created by GNU Automake missing as a replacement of"
-	echo "#  $ $@"
-	echo "exit 0"
-	chmod +x $file
-	exit 1
-    fi
-    ;;
-
-  bison|yacc)
-    echo 1>&2 "\
-WARNING: \`$1' $msg.  You should only need it if
-         you modified a \`.y' file.  You may need the \`Bison' package
-         in order for those modifications to take effect.  You can get
-         \`Bison' from any GNU archive site."
-    rm -f y.tab.c y.tab.h
-    if test $# -ne 1; then
-        eval LASTARG="\${$#}"
-	case $LASTARG in
-	*.y)
-	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
-	    if test -f "$SRCFILE"; then
-	         cp "$SRCFILE" y.tab.c
-	    fi
-	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
-	    if test -f "$SRCFILE"; then
-	         cp "$SRCFILE" y.tab.h
-	    fi
-	  ;;
-	esac
-    fi
-    if test ! -f y.tab.h; then
-	echo >y.tab.h
-    fi
-    if test ! -f y.tab.c; then
-	echo 'main() { return 0; }' >y.tab.c
-    fi
-    ;;
-
-  lex|flex)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.l' file.  You may need the \`Flex' package
-         in order for those modifications to take effect.  You can get
-         \`Flex' from any GNU archive site."
-    rm -f lex.yy.c
-    if test $# -ne 1; then
-        eval LASTARG="\${$#}"
-	case $LASTARG in
-	*.l)
-	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
-	    if test -f "$SRCFILE"; then
-	         cp "$SRCFILE" lex.yy.c
-	    fi
-	  ;;
-	esac
-    fi
-    if test ! -f lex.yy.c; then
-	echo 'main() { return 0; }' >lex.yy.c
-    fi
-    ;;
-
-  help2man)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-	 you modified a dependency of a manual page.  You may need the
-	 \`Help2man' package in order for those modifications to take
-	 effect.  You can get \`Help2man' from any GNU archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-	touch $file
-    else
-	test -z "$file" || exec >$file
-	echo ".ab help2man is required to generate this page"
-	exit 1
-    fi
-    ;;
-
-  makeinfo)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.texi' or \`.texinfo' file, or any other file
-         indirectly affecting the aspect of the manual.  The spurious
-         call might also be the consequence of using a buggy \`make' (AIX,
-         DU, IRIX).  You might want to install the \`Texinfo' package or
-         the \`GNU make' package.  Grab either from any GNU archive site."
-    # The file to touch is that specified with -o ...
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -z "$file"; then
-      # ... or it is the one specified with @setfilename ...
-      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
-      file=`sed -n '
-	/^@setfilename/{
-	  s/.* \([^ ]*\) *$/\1/
-	  p
-	  q
-	}' $infile`
-      # ... or it is derived from the source name (dir/f.texi becomes f.info)
-      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
-    fi
-    # If the file does not exist, the user really needs makeinfo;
-    # let's fail without touching anything.
-    test -f $file || exit 1
-    touch $file
-    ;;
-
-  tar)
-    shift
-
-    # We have already tried tar in the generic part.
-    # Look for gnutar/gtar before invocation to avoid ugly error
-    # messages.
-    if (gnutar --version > /dev/null 2>&1); then
-       gnutar "$@" && exit 0
-    fi
-    if (gtar --version > /dev/null 2>&1); then
-       gtar "$@" && exit 0
-    fi
-    firstarg="$1"
-    if shift; then
-	case $firstarg in
-	*o*)
-	    firstarg=`echo "$firstarg" | sed s/o//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-	case $firstarg in
-	*h*)
-	    firstarg=`echo "$firstarg" | sed s/h//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-    fi
-
-    echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
-         You may want to install GNU tar or Free paxutils, or check the
-         command line arguments."
-    exit 1
-    ;;
-
-  *)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, and is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.  Check the \`README' file,
-         it often tells you about the needed prerequisites for installing
-         this package.  You may also peek at any GNU archive site, in case
-         some other package would contain this missing \`$1' program."
-    exit 1
-    ;;
-esac
-
-exit 0
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:
diff --git a/yaml-0.1.3/configure b/yaml-0.1.3/configure
deleted file mode 100755
index 9ba686b..0000000
--- a/yaml-0.1.3/configure
+++ /dev/null
Binary files differ
diff --git a/yaml-0.1.3/configure.ac b/yaml-0.1.3/configure.ac
deleted file mode 100644
index 6719caa..0000000
--- a/yaml-0.1.3/configure.ac
+++ /dev/null
@@ -1,73 +0,0 @@
-# Run `./bootstrap` to generate the "configure" script.
-
-# Define the package version numbers and the bug reporting link.
-m4_define([YAML_MAJOR], 0)
-m4_define([YAML_MINOR], 1)
-m4_define([YAML_PATCH], 3)
-m4_define([YAML_BUGS], [http://pyyaml.org/newticket?component=libyaml])
-
-# Define the libtool version numbers; check the Autobook, Section 11.4.
-# Bump the libtool version numbers using the following algorithm:
-#   if (the current interface has not been changed):
-#       YAML_REVISION += 1
-#   else:
-#       YAML_REVISION = 0
-#       YAML_CURRENT += 1
-#       if (this release is backward compatible with the previous release):
-#           YAML_AGE += 1
-#       else:
-#           YAML_AGE = 0
-m4_define([YAML_RELEASE], 0)
-m4_define([YAML_CURRENT], 2)
-m4_define([YAML_REVISION], 1)
-m4_define([YAML_AGE], 0)
-
-# Initialize autoconf & automake.
-AC_PREREQ(2.59)
-AC_INIT([yaml], [YAML_MAJOR.YAML_MINOR.YAML_PATCH], [YAML_BUGS])
-AC_CONFIG_AUX_DIR([config])
-AC_CONFIG_HEADERS([config.h])
-AM_INIT_AUTOMAKE([1.9 foreign])
-
-# Define macro variables for the package version numbers.
-AC_DEFINE(YAML_VERSION_MAJOR, YAML_MAJOR, [Define the major version number.])
-AC_DEFINE(YAML_VERSION_MINOR, YAML_MINOR, [Define the minor version number.])
-AC_DEFINE(YAML_VERSION_PATCH, YAML_PATCH, [Define the patch version number.])
-AC_DEFINE(YAML_VERSION_STRING, "YAML_MAJOR.YAML_MINOR.YAML_PATCH", [Define the version string.])
-
-# Define substitutions for the libtool version numbers.
-YAML_LT_RELEASE=YAML_RELEASE
-YAML_LT_CURRENT=YAML_CURRENT
-YAML_LT_REVISION=YAML_REVISION
-YAML_LT_AGE=YAML_AGE
-AC_SUBST(YAML_LT_RELEASE)
-AC_SUBST(YAML_LT_CURRENT)
-AC_SUBST(YAML_LT_REVISION)
-AC_SUBST(YAML_LT_AGE)
-
-# Note: in order to update checks, run `autoscan` and look through "configure.scan".
-
-# Checks for programs.
-AC_PROG_CC
-AC_PROG_CPP
-AC_PROG_INSTALL
-AC_PROG_LN_S
-AC_PROG_MAKE_SET
-AC_PROG_LIBTOOL
-
-AC_CHECK_PROG(DOXYGEN, [doxygen], [true], [false])
-AM_CONDITIONAL(DOXYGEN, [test "$DOXYGEN" = true])
-
-# Checks for header files.
-AC_HEADER_STDC
-AC_CHECK_HEADERS([stdlib.h])
-
-# Checks for typedefs, structures, and compiler characteristics.
-AC_C_CONST
-AC_TYPE_SIZE_T
-
-# Define Makefiles.
-AC_CONFIG_FILES([include/Makefile src/Makefile Makefile tests/Makefile win32/Makefile])
-
-# Generate the "configure" script.
-AC_OUTPUT
diff --git a/yaml-0.1.3/doc/doxygen.cfg b/yaml-0.1.3/doc/doxygen.cfg
deleted file mode 100644
index a58bb17..0000000
--- a/yaml-0.1.3/doc/doxygen.cfg
+++ /dev/null
@@ -1,222 +0,0 @@
-# Doxyfile 1.4.4
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-PROJECT_NAME           = $(PACKAGE)
-PROJECT_NUMBER         = $(VERSION)
-OUTPUT_DIRECTORY       = $(top_builddir)/doc/
-CREATE_SUBDIRS         = NO
-OUTPUT_LANGUAGE        = English
-USE_WINDOWS_ENCODING   = NO
-BRIEF_MEMBER_DESC      = YES
-REPEAT_BRIEF           = YES
-ABBREVIATE_BRIEF       = 
-ALWAYS_DETAILED_SEC    = NO
-INLINE_INHERITED_MEMB  = NO
-FULL_PATH_NAMES        = YES
-STRIP_FROM_PATH        = 
-STRIP_FROM_INC_PATH    = 
-SHORT_NAMES            = NO
-JAVADOC_AUTOBRIEF      = YES
-MULTILINE_CPP_IS_BRIEF = NO
-DETAILS_AT_TOP         = NO
-INHERIT_DOCS           = YES
-DISTRIBUTE_GROUP_DOC   = NO
-SEPARATE_MEMBER_PAGES  = NO
-TAB_SIZE               = 8
-ALIASES                = 
-OPTIMIZE_OUTPUT_FOR_C  = YES
-OPTIMIZE_OUTPUT_JAVA   = NO
-SUBGROUPING            = YES
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-EXTRACT_ALL            = NO
-EXTRACT_PRIVATE        = NO
-EXTRACT_STATIC         = NO
-EXTRACT_LOCAL_CLASSES  = NO
-EXTRACT_LOCAL_METHODS  = NO
-HIDE_UNDOC_MEMBERS     = NO
-HIDE_UNDOC_CLASSES     = NO
-HIDE_FRIEND_COMPOUNDS  = NO
-HIDE_IN_BODY_DOCS      = NO
-INTERNAL_DOCS          = NO
-CASE_SENSE_NAMES       = YES
-HIDE_SCOPE_NAMES       = NO
-SHOW_INCLUDE_FILES     = YES
-INLINE_INFO            = YES
-SORT_MEMBER_DOCS       = NO
-SORT_BRIEF_DOCS        = NO
-SORT_BY_SCOPE_NAME     = NO
-GENERATE_TODOLIST      = YES
-GENERATE_TESTLIST      = YES
-GENERATE_BUGLIST       = YES
-GENERATE_DEPRECATEDLIST= YES
-ENABLED_SECTIONS       = 
-MAX_INITIALIZER_LINES  = 30
-SHOW_USED_FILES        = YES
-SHOW_DIRECTORIES       = YES
-FILE_VERSION_FILTER    = 
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-QUIET                  = NO
-WARNINGS               = YES
-WARN_IF_UNDOCUMENTED   = YES
-WARN_IF_DOC_ERROR      = YES
-WARN_NO_PARAMDOC       = NO
-WARN_FORMAT            = "$file:$line: $text"
-WARN_LOGFILE           = 
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-INPUT                  = $(top_srcdir)/include/
-FILE_PATTERNS          = *.h
-RECURSIVE              = YES
-EXCLUDE                = 
-EXCLUDE_SYMLINKS       = NO
-EXCLUDE_PATTERNS       = 
-EXAMPLE_PATH           = 
-EXAMPLE_PATTERNS       = 
-EXAMPLE_RECURSIVE      = NO
-IMAGE_PATH             = 
-INPUT_FILTER           = 
-FILTER_PATTERNS        = 
-FILTER_SOURCE_FILES    = NO
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-SOURCE_BROWSER         = NO
-INLINE_SOURCES         = NO
-STRIP_CODE_COMMENTS    = YES
-REFERENCED_BY_RELATION = NO
-REFERENCES_RELATION    = NO
-USE_HTAGS              = NO
-VERBATIM_HEADERS       = NO
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-ALPHABETICAL_INDEX     = NO
-COLS_IN_ALPHA_INDEX    = 5
-IGNORE_PREFIX          = 
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-GENERATE_HTML          = YES
-HTML_OUTPUT            = html
-HTML_FILE_EXTENSION    = .html
-HTML_HEADER            = 
-HTML_FOOTER            = 
-HTML_STYLESHEET        = 
-HTML_ALIGN_MEMBERS     = YES
-GENERATE_HTMLHELP      = NO
-CHM_FILE               = 
-HHC_LOCATION           = 
-GENERATE_CHI           = NO
-BINARY_TOC             = NO
-TOC_EXPAND             = NO
-DISABLE_INDEX          = NO
-ENUM_VALUES_PER_LINE   = 1
-GENERATE_TREEVIEW      = NO
-TREEVIEW_WIDTH         = 250
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-GENERATE_LATEX         = NO
-LATEX_OUTPUT           = latex
-LATEX_CMD_NAME         = latex
-MAKEINDEX_CMD_NAME     = makeindex
-COMPACT_LATEX          = NO
-PAPER_TYPE             = a4wide
-EXTRA_PACKAGES         = 
-LATEX_HEADER           = 
-PDF_HYPERLINKS         = NO
-USE_PDFLATEX           = NO
-LATEX_BATCHMODE        = NO
-LATEX_HIDE_INDICES     = NO
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-GENERATE_RTF           = NO
-RTF_OUTPUT             = rtf
-COMPACT_RTF            = NO
-RTF_HYPERLINKS         = NO
-RTF_STYLESHEET_FILE    = 
-RTF_EXTENSIONS_FILE    = 
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-GENERATE_MAN           = NO
-MAN_OUTPUT             = man
-MAN_EXTENSION          = .3
-MAN_LINKS              = NO
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-GENERATE_XML           = NO
-XML_OUTPUT             = xml
-XML_SCHEMA             = 
-XML_DTD                = 
-XML_PROGRAMLISTING     = YES
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-GENERATE_AUTOGEN_DEF   = NO
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-GENERATE_PERLMOD       = NO
-PERLMOD_LATEX          = NO
-PERLMOD_PRETTY         = YES
-PERLMOD_MAKEVAR_PREFIX = 
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor   
-#---------------------------------------------------------------------------
-ENABLE_PREPROCESSING   = YES
-MACRO_EXPANSION        = YES
-EXPAND_ONLY_PREDEF     = YES
-SEARCH_INCLUDES        = YES
-INCLUDE_PATH           = 
-INCLUDE_FILE_PATTERNS  = 
-PREDEFINED             = "YAML_DECLARE(type)=type"
-EXPAND_AS_DEFINED      = 
-SKIP_FUNCTION_MACROS   = YES
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references   
-#---------------------------------------------------------------------------
-TAGFILES               = 
-GENERATE_TAGFILE       = 
-ALLEXTERNALS           = NO
-EXTERNAL_GROUPS        = YES
-PERL_PATH              = /usr/bin/perl
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool   
-#---------------------------------------------------------------------------
-CLASS_DIAGRAMS         = NO
-HIDE_UNDOC_RELATIONS   = YES
-HAVE_DOT               = NO
-CLASS_GRAPH            = YES
-COLLABORATION_GRAPH    = YES
-GROUP_GRAPHS           = YES
-UML_LOOK               = NO
-TEMPLATE_RELATIONS     = NO
-INCLUDE_GRAPH          = YES
-INCLUDED_BY_GRAPH      = YES
-CALL_GRAPH             = NO
-GRAPHICAL_HIERARCHY    = YES
-DIRECTORY_GRAPH        = YES
-DOT_IMAGE_FORMAT       = png
-DOT_PATH               = 
-DOTFILE_DIRS           = 
-MAX_DOT_GRAPH_WIDTH    = 1024
-MAX_DOT_GRAPH_HEIGHT   = 1024
-MAX_DOT_GRAPH_DEPTH    = 0
-DOT_TRANSPARENT        = NO
-DOT_MULTI_TARGETS      = NO
-GENERATE_LEGEND        = YES
-DOT_CLEANUP            = YES
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine   
-#---------------------------------------------------------------------------
-SEARCHENGINE           = NO
diff --git a/yaml-0.1.3/doc/html/annotated.html b/yaml-0.1.3/doc/html/annotated.html
deleted file mode 100644
index 71a457b..0000000
--- a/yaml-0.1.3/doc/html/annotated.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Structures</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>Data Structures</h1>Here are the data structures with brief descriptions:<table>
-  <tr><td class="indexkey"><a class="el" href="structyaml__alias__data__s.html">yaml_alias_data_s</a></td><td class="indexvalue">This structure holds aliases data </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structyaml__document__s.html">yaml_document_s</a></td><td class="indexvalue">The document structure </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structyaml__emitter__s.html">yaml_emitter_s</a></td><td class="indexvalue">The emitter structure </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structyaml__event__s.html">yaml_event_s</a></td><td class="indexvalue">The event structure </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structyaml__mark__s.html">yaml_mark_s</a></td><td class="indexvalue">The pointer position </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structyaml__node__pair__s.html">yaml_node_pair_s</a></td><td class="indexvalue">An element of a mapping node </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structyaml__node__s.html">yaml_node_s</a></td><td class="indexvalue">The node structure </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structyaml__parser__s.html">yaml_parser_s</a></td><td class="indexvalue">The parser structure </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structyaml__simple__key__s.html">yaml_simple_key_s</a></td><td class="indexvalue">This structure holds information about a potential simple key </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_s</a></td><td class="indexvalue">The tag directive data </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structyaml__token__s.html">yaml_token_s</a></td><td class="indexvalue">The token structure </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structyaml__version__directive__s.html">yaml_version_directive_s</a></td><td class="indexvalue">The version directive data </td></tr>
-</table>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/classes.html b/yaml-0.1.3/doc/html/classes.html
deleted file mode 100644
index f86fdfe..0000000
--- a/yaml-0.1.3/doc/html/classes.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Alphabetical List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>Data Structure Index</h1><p><div class="qindex"><a class="qindex" href="#letter_Y">Y</a></div><p>
-<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
-<tr><td><a name="letter_Y"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;Y&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="structyaml__emitter__s.html">yaml_emitter_s</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structyaml__node__pair__s.html">yaml_node_pair_s</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structyaml__simple__key__s.html">yaml_simple_key_s</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structyaml__token__s.html">yaml_token_s</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structyaml__alias__data__s.html">yaml_alias_data_s</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structyaml__event__s.html">yaml_event_s</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structyaml__node__s.html">yaml_node_s</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_s</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structyaml__version__directive__s.html">yaml_version_directive_s</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structyaml__document__s.html">yaml_document_s</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structyaml__mark__s.html">yaml_mark_s</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structyaml__parser__s.html">yaml_parser_s</a>&nbsp;&nbsp;&nbsp;</td></tr></table><p><div class="qindex"><a class="qindex" href="#letter_Y">Y</a></div><p>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/doxygen.css b/yaml-0.1.3/doc/html/doxygen.css
deleted file mode 100644
index 3767dc9..0000000
--- a/yaml-0.1.3/doc/html/doxygen.css
+++ /dev/null
@@ -1,441 +0,0 @@
-body, table, div, p, dl {
-	font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
-	font-size: 12px;
-}
-
-/* @group Heading Levels */
-
-h1 {
-	text-align: center;
-	font-size: 150%;
-}
-
-h2 {
-	font-size: 120%;
-}
-
-h3 {
-	font-size: 100%;
-}
-
-/* @end */
-
-caption {
-	font-weight: bold;
-}
-
-div.qindex, div.navtab{
-	background-color: #e8eef2;
-	border: 1px solid #84b0c7;
-	text-align: center;
-	margin: 2px;
-	padding: 2px;
-}
-
-div.qindex, div.navpath {
-	width: 100%;
-	line-height: 140%;
-}
-
-div.navtab {
-	margin-right: 15px;
-}
-
-/* @group Link Styling */
-
-a {
-	color: #153788;
-	font-weight: normal;
-	text-decoration: none;
-}
-
-.contents a:visited {
-	color: #1b77c5;
-}
-
-a:hover {
-	text-decoration: underline;
-}
-
-a.qindex {
-	font-weight: bold;
-}
-
-a.qindexHL {
-	font-weight: bold;
-	background-color: #6666cc;
-	color: #ffffff;
-	border: 1px double #9295C2;
-}
-
-.contents a.qindexHL:visited {
-        color: #ffffff;
-}
-
-a.el {
-	font-weight: bold;
-}
-
-a.elRef {
-}
-
-a.code {
-}
-
-a.codeRef {
-}
-
-/* @end */
-
-dl.el {
-	margin-left: -1cm;
-}
-
-.fragment {
-	font-family: monospace, fixed;
-	font-size: 105%;
-}
-
-pre.fragment {
-	border: 1px solid #CCCCCC;
-	background-color: #f5f5f5;
-	padding: 4px 6px;
-	margin: 4px 8px 4px 2px;
-}
-
-div.ah {
-	background-color: black;
-	font-weight: bold;
-	color: #ffffff;
-	margin-bottom: 3px;
-	margin-top: 3px
-}
-
-div.groupHeader {
-	margin-left: 16px;
-	margin-top: 12px;
-	margin-bottom: 6px;
-	font-weight: bold;
-}
-
-div.groupText {
-	margin-left: 16px;
-	font-style: italic;
-}
-
-body {
-	background: white;
-	color: black;
-	margin-right: 20px;
-	margin-left: 20px;
-}
-
-td.indexkey {
-	background-color: #e8eef2;
-	font-weight: bold;
-	border: 1px solid #CCCCCC;
-	margin: 2px 0px 2px 0;
-	padding: 2px 10px;
-}
-
-td.indexvalue {
-	background-color: #e8eef2;
-	border: 1px solid #CCCCCC;
-	padding: 2px 10px;
-	margin: 2px 0px;
-}
-
-tr.memlist {
-	background-color: #f0f0f0;
-}
-
-p.formulaDsp {
-	text-align: center;
-}
-
-img.formulaDsp {
-	
-}
-
-img.formulaInl {
-	vertical-align: middle;
-}
-
-/* @group Code Colorization */
-
-span.keyword {
-	color: #008000
-}
-
-span.keywordtype {
-	color: #604020
-}
-
-span.keywordflow {
-	color: #e08000
-}
-
-span.comment {
-	color: #800000
-}
-
-span.preprocessor {
-	color: #806020
-}
-
-span.stringliteral {
-	color: #002080
-}
-
-span.charliteral {
-	color: #008080
-}
-
-span.vhdldigit { 
-	color: #ff00ff 
-}
-
-span.vhdlchar { 
-	color: #000000 
-}
-
-span.vhdlkeyword { 
-	color: #700070 
-}
-
-span.vhdllogic { 
-	color: #ff0000 
-}
-
-/* @end */
-
-.search {
-	color: #003399;
-	font-weight: bold;
-}
-
-form.search {
-	margin-bottom: 0px;
-	margin-top: 0px;
-}
-
-input.search {
-	font-size: 75%;
-	color: #000080;
-	font-weight: normal;
-	background-color: #e8eef2;
-}
-
-td.tiny {
-	font-size: 75%;
-}
-
-.dirtab {
-	padding: 4px;
-	border-collapse: collapse;
-	border: 1px solid #84b0c7;
-}
-
-th.dirtab {
-	background: #e8eef2;
-	font-weight: bold;
-}
-
-hr {
-	height: 0;
-	border: none;
-	border-top: 1px solid #666;
-}
-
-/* @group Member Descriptions */
-
-.mdescLeft, .mdescRight,
-.memItemLeft, .memItemRight,
-.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
-	background-color: #FAFAFA;
-	border: none;
-	margin: 4px;
-	padding: 1px 0 0 8px;
-}
-
-.mdescLeft, .mdescRight {
-	padding: 0px 8px 4px 8px;
-	color: #555;
-}
-
-.memItemLeft, .memItemRight, .memTemplParams {
-	border-top: 1px solid #ccc;
-}
-
-.memTemplParams {
-	color: #606060;
-}
-
-/* @end */
-
-/* @group Member Details */
-
-/* Styles for detailed member documentation */
-
-.memtemplate {
-	font-size: 80%;
-	color: #606060;
-	font-weight: normal;
-	margin-left: 3px;
-}
-
-.memnav {
-	background-color: #e8eef2;
-	border: 1px solid #84b0c7;
-	text-align: center;
-	margin: 2px;
-	margin-right: 15px;
-	padding: 2px;
-}
-
-.memitem {
-	padding: 0;
-}
-
-.memname {
-	white-space: nowrap;
-	font-weight: bold;
-}
-
-.memproto, .memdoc {
-	border: 1px solid #84b0c7;	
-}
-
-.memproto {
-	padding: 0;
-	background-color: #d5e1e8;
-	font-weight: bold;
-	-webkit-border-top-left-radius: 8px;
-	-webkit-border-top-right-radius: 8px;
-	-moz-border-radius-topleft: 8px;
-	-moz-border-radius-topright: 8px;
-}
-
-.memdoc {
-	padding: 2px 5px;
-	background-color: #eef3f5;
-	border-top-width: 0;
-	-webkit-border-bottom-left-radius: 8px;
-	-webkit-border-bottom-right-radius: 8px;
-	-moz-border-radius-bottomleft: 8px;
-	-moz-border-radius-bottomright: 8px;
-}
-
-.paramkey {
-	text-align: right;
-}
-
-.paramtype {
-	white-space: nowrap;
-}
-
-.paramname {
-	color: #602020;
-	white-space: nowrap;
-}
-.paramname em {
-	font-style: normal;
-}
-
-/* @end */
-
-/* @group Directory (tree) */
-
-/* for the tree view */
-
-.ftvtree {
-	font-family: sans-serif;
-	margin: 0.5em;
-}
-
-/* these are for tree view when used as main index */
-
-.directory {
-	font-size: 9pt;
-	font-weight: bold;
-}
-
-.directory h3 {
-	margin: 0px;
-	margin-top: 1em;
-	font-size: 11pt;
-}
-
-/*
-The following two styles can be used to replace the root node title
-with an image of your choice.  Simply uncomment the next two styles,
-specify the name of your image and be sure to set 'height' to the
-proper pixel height of your image.
-*/
-
-/*
-.directory h3.swap {
-	height: 61px;
-	background-repeat: no-repeat;
-	background-image: url("yourimage.gif");
-}
-.directory h3.swap span {
-	display: none;
-}
-*/
-
-.directory > h3 {
-	margin-top: 0;
-}
-
-.directory p {
-	margin: 0px;
-	white-space: nowrap;
-}
-
-.directory div {
-	display: none;
-	margin: 0px;
-}
-
-.directory img {
-	vertical-align: -30%;
-}
-
-/* these are for tree view when not used as main index */
-
-.directory-alt {
-	font-size: 100%;
-	font-weight: bold;
-}
-
-.directory-alt h3 {
-	margin: 0px;
-	margin-top: 1em;
-	font-size: 11pt;
-}
-
-.directory-alt > h3 {
-	margin-top: 0;
-}
-
-.directory-alt p {
-	margin: 0px;
-	white-space: nowrap;
-}
-
-.directory-alt div {
-	display: none;
-	margin: 0px;
-}
-
-.directory-alt img {
-	vertical-align: -30%;
-}
-
-/* @end */
-
-address {
-	font-style: normal;
-	color: #333;
-}
diff --git a/yaml-0.1.3/doc/html/doxygen.png b/yaml-0.1.3/doc/html/doxygen.png
deleted file mode 100644
index f0a274b..0000000
--- a/yaml-0.1.3/doc/html/doxygen.png
+++ /dev/null
Binary files differ
diff --git a/yaml-0.1.3/doc/html/files.html b/yaml-0.1.3/doc/html/files.html
deleted file mode 100644
index 318a4cf..0000000
--- a/yaml-0.1.3/doc/html/files.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: File Index</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="files.html"><span>File&nbsp;List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>File List</h1>Here is a list of all documented files with brief descriptions:<table>
-  <tr><td class="indexkey"><a class="el" href="yaml_8h.html">yaml.h</a></td><td class="indexvalue">Public interface for libyaml </td></tr>
-</table>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions.html b/yaml-0.1.3/doc/html/functions.html
deleted file mode 100644
index a29583f..0000000
--- a/yaml-0.1.3/doc/html/functions.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
-<p>
-<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
-<li>alias
-: <a class="el" href="structyaml__token__s.html#1f942353efa1972a38a0763afefabe0c">yaml_token_s</a>
-, <a class="el" href="structyaml__event__s.html#c21f0f1e12207b8fd4f02496259f6c0b">yaml_event_s</a>
-, <a class="el" href="structyaml__emitter__s.html#1129c6f9ae5cd3b437b8ab8767324f03">yaml_emitter_s</a>
-<li>aliases
-: <a class="el" href="structyaml__parser__s.html#0c10698207d727f9e5d9ced627d130ef">yaml_parser_s</a>
-<li>anchor
-: <a class="el" href="structyaml__emitter__s.html#6f2882bde71e478e29dc5b293def8739">yaml_emitter_s</a>
-, <a class="el" href="structyaml__alias__data__s.html#c4b9a352dd8ff747bfa63a54832d7962">yaml_alias_data_s</a>
-, <a class="el" href="structyaml__token__s.html#cc0f6636995f5fe332604b74571e6cfa">yaml_token_s</a>
-, <a class="el" href="structyaml__event__s.html#aa97ab683d28e5f611042d0fbd929125">yaml_event_s</a>
-<li>anchor_data
-: <a class="el" href="structyaml__emitter__s.html#d8883d967ee02e3e15e58bc2533188cc">yaml_emitter_s</a>
-<li>anchor_length
-: <a class="el" href="structyaml__emitter__s.html#ece73cc234475630032b1c75a735eeb5">yaml_emitter_s</a>
-<li>anchors
-: <a class="el" href="structyaml__emitter__s.html#d4e7a72cb8b1b67373ba6d76a5229e6b">yaml_emitter_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_0x62.html b/yaml-0.1.3/doc/html/functions_0x62.html
deleted file mode 100644
index 3f71f84..0000000
--- a/yaml-0.1.3/doc/html/functions_0x62.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li class="current"><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
-<p>
-<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
-<li>best_indent
-: <a class="el" href="structyaml__emitter__s.html#33545f8924be89daf8b81dc905d558c0">yaml_emitter_s</a>
-<li>best_width
-: <a class="el" href="structyaml__emitter__s.html#56dde6b352bdf7d4031f89d2b5d704f6">yaml_emitter_s</a>
-<li>block_allowed
-: <a class="el" href="structyaml__emitter__s.html#64e05972897d02f606627ef0cf3c7420">yaml_emitter_s</a>
-<li>block_plain_allowed
-: <a class="el" href="structyaml__emitter__s.html#5b5f6c9d687d788c8dac86d213ef4c16">yaml_emitter_s</a>
-<li>buffer
-: <a class="el" href="structyaml__emitter__s.html#fb2700e9b866b5be0ff6c7549c719f81">yaml_emitter_s</a>
-, <a class="el" href="structyaml__parser__s.html#fc56b6252bd75ec87edec5c80a5c733e">yaml_parser_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_0x63.html b/yaml-0.1.3/doc/html/functions_0x63.html
deleted file mode 100644
index 9b0f8b0..0000000
--- a/yaml-0.1.3/doc/html/functions_0x63.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li class="current"><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
-<p>
-<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
-<li>canonical
-: <a class="el" href="structyaml__emitter__s.html#cb0259cdc5e2bb23faaf7266496df827">yaml_emitter_s</a>
-<li>closed
-: <a class="el" href="structyaml__emitter__s.html#978d894a219686d31d971899e31910cd">yaml_emitter_s</a>
-<li>column
-: <a class="el" href="structyaml__emitter__s.html#678fbbacad5d1f3f9bb7516282888b8a">yaml_emitter_s</a>
-, <a class="el" href="structyaml__mark__s.html#aa18357a6fb2bb377b969ce9ff589797">yaml_mark_s</a>
-<li>context
-: <a class="el" href="structyaml__parser__s.html#6779b67a23bbf7c401e4257d5875ae6b">yaml_parser_s</a>
-<li>context_mark
-: <a class="el" href="structyaml__parser__s.html#ce259eec6e570f94b98b252e1a632e88">yaml_parser_s</a>
-<li>current
-: <a class="el" href="structyaml__parser__s.html#3406d2ba7e969c09344d4ced8c855007">yaml_parser_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_0x64.html b/yaml-0.1.3/doc/html/functions_0x64.html
deleted file mode 100644
index 8af9e02..0000000
--- a/yaml-0.1.3/doc/html/functions_0x64.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li class="current"><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
-<p>
-<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
-<li>data
-: <a class="el" href="structyaml__token__s.html#edb5be9b6b8f5ef6c129575e84f63605">yaml_token_s</a>
-, <a class="el" href="structyaml__event__s.html#0b8f9cce08e49459e4bab89035dbf6c6">yaml_event_s</a>
-, <a class="el" href="structyaml__node__s.html#7e1be921e921f2d0911e450a063b1344">yaml_node_s</a>
-<li>document
-: <a class="el" href="structyaml__emitter__s.html#f9cc8801cc9b46a4f45255c67a1574a7">yaml_emitter_s</a>
-, <a class="el" href="structyaml__parser__s.html#c3dad5822f49d86cfddc2e5e415a158c">yaml_parser_s</a>
-<li>document_end
-: <a class="el" href="structyaml__event__s.html#cffec5f24c01bb6bfb0c93a9bf1a803e">yaml_event_s</a>
-<li>document_start
-: <a class="el" href="structyaml__event__s.html#ed593fadbeb898d6d90b0c62522a82cc">yaml_event_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_0x65.html b/yaml-0.1.3/doc/html/functions_0x65.html
deleted file mode 100644
index c4e1b86..0000000
--- a/yaml-0.1.3/doc/html/functions_0x65.html
+++ /dev/null
@@ -1,100 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li class="current"><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
-<p>
-<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
-<li>encoding
-: <a class="el" href="structyaml__token__s.html#ab75b9cb91438e0e1efe2522652cf478">yaml_token_s</a>
-, <a class="el" href="structyaml__event__s.html#92139ba6ae79089fd9a2f5f4aeaf733f">yaml_event_s</a>
-, <a class="el" href="structyaml__emitter__s.html#da17f19fa6248d6ee493684b03700857">yaml_emitter_s</a>
-, <a class="el" href="structyaml__parser__s.html#4f062e9d1fb1082bbf3996e46214905a">yaml_parser_s</a>
-<li>end
-: <a class="el" href="structyaml__document__s.html#dc9ffcca86a2684362428da69ffd3dea">yaml_document_s</a>
-, <a class="el" href="structyaml__parser__s.html#211a0aedc964ba8cd07cb7875faa464b">yaml_parser_s</a>
-, <a class="el" href="structyaml__document__s.html#f14fd1a6c1fd10088391f07349ba55e8">yaml_document_s</a>
-, <a class="el" href="structyaml__parser__s.html#a7fdc1ff8342636119934ac824a2ecc8">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#3b28127063323de1d88fc18cdb6adf8a">yaml_emitter_s</a>
-, <a class="el" href="structyaml__event__s.html#115b4a9797f3a72cd78d42c85100317c">yaml_event_s</a>
-, <a class="el" href="structyaml__emitter__s.html#55703a15e71c6b9551a2f4feb888bdcb">yaml_emitter_s</a>
-, <a class="el" href="structyaml__parser__s.html#ad74ffeb7f2eef0a12e34b0aac263ff3">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#42285849529f1b0eb9f4aac2eaef5204">yaml_emitter_s</a>
-, <a class="el" href="structyaml__parser__s.html#6ff1f802eb95bc45f13e8e73ec009828">yaml_parser_s</a>
-, <a class="el" href="structyaml__node__s.html#c9b3d891f9fcd5462289823716deca0e">yaml_node_s</a>
-, <a class="el" href="structyaml__parser__s.html#a768a9c29ae2c3015fdb84ea313844e2">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#6669a94bc18247491e59c709852be0d1">yaml_emitter_s</a>
-, <a class="el" href="structyaml__parser__s.html#41594b6495f4d31edb977cafb8cbaf78">yaml_parser_s</a>
-, <a class="el" href="structyaml__node__s.html#1827ba7f3e7f7e94171fa20ade25345d">yaml_node_s</a>
-<li>end_implicit
-: <a class="el" href="structyaml__document__s.html#59de90b4078659fd0f49377929afcac1">yaml_document_s</a>
-<li>end_mark
-: <a class="el" href="structyaml__event__s.html#9307f91473094c229738b03d223bc4ba">yaml_event_s</a>
-, <a class="el" href="structyaml__node__s.html#63144671fd16f94f72c6d537360f7328">yaml_node_s</a>
-, <a class="el" href="structyaml__token__s.html#97f08b38dfb0a5be26ef8831864a5311">yaml_token_s</a>
-, <a class="el" href="structyaml__document__s.html#9299efdaadf764f4d03641a3ee51e0d0">yaml_document_s</a>
-<li>eof
-: <a class="el" href="structyaml__parser__s.html#6129a99d45aee14ec705aa54dbb493b7">yaml_parser_s</a>
-<li>error
-: <a class="el" href="structyaml__emitter__s.html#fa2d6367a86ae6d43df14e24479bb0a7">yaml_emitter_s</a>
-, <a class="el" href="structyaml__parser__s.html#6c5c3488ff22c8a4d234ca8587fa1472">yaml_parser_s</a>
-<li>events
-: <a class="el" href="structyaml__emitter__s.html#3516b49eb7579e422750a94a9d7c1700">yaml_emitter_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_0x66.html b/yaml-0.1.3/doc/html/functions_0x66.html
deleted file mode 100644
index cff3594..0000000
--- a/yaml-0.1.3/doc/html/functions_0x66.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li class="current"><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
-<p>
-<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
-<li>file
-: <a class="el" href="structyaml__parser__s.html#e69c2974e3c4c37e941a0e1971be15a9">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#bfe1e82cd5c4a180b1468e65ccfd1c61">yaml_emitter_s</a>
-<li>flow_level
-: <a class="el" href="structyaml__emitter__s.html#50f8e97c4290b83ebd646b4c4f5c5de9">yaml_emitter_s</a>
-, <a class="el" href="structyaml__parser__s.html#6a4bbbd3f58533e0969b7218c1e73fd4">yaml_parser_s</a>
-<li>flow_plain_allowed
-: <a class="el" href="structyaml__emitter__s.html#fd8496f5bb995bb5aacc349fd6b45bf5">yaml_emitter_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_0x68.html b/yaml-0.1.3/doc/html/functions_0x68.html
deleted file mode 100644
index 735bd45..0000000
--- a/yaml-0.1.3/doc/html/functions_0x68.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li class="current"><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
-<p>
-<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
-<li>handle
-: <a class="el" href="structyaml__tag__directive__s.html#9934c62f2b18fd087a95af25c7739490">yaml_tag_directive_s</a>
-, <a class="el" href="structyaml__token__s.html#01665687653c945a6666dd9debaecd65">yaml_token_s</a>
-, <a class="el" href="structyaml__emitter__s.html#7f043a9092eef2d644cc8f1180386239">yaml_emitter_s</a>
-<li>handle_length
-: <a class="el" href="structyaml__emitter__s.html#3552cece6908f99518205e8cbe2c793a">yaml_emitter_s</a>
-<li>head
-: <a class="el" href="structyaml__parser__s.html#a1c7a1248ca22159a3e60ba45b386507">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#547dfd20576006e606ffb0d8042b4234">yaml_emitter_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_0x69.html b/yaml-0.1.3/doc/html/functions_0x69.html
deleted file mode 100644
index adf859e..0000000
--- a/yaml-0.1.3/doc/html/functions_0x69.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li class="current"><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
-<p>
-<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
-<li>implicit
-: <a class="el" href="structyaml__event__s.html#3cbb10e276d55890ee2fa802dd6290e1">yaml_event_s</a>
-<li>indent
-: <a class="el" href="structyaml__parser__s.html#bad00703b649df32ee0d7b00b2f10403">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#93a73494a5d62464a67cc71f86ad9728">yaml_emitter_s</a>
-<li>indention
-: <a class="el" href="structyaml__emitter__s.html#407de8ff950b16b4254a381d4e5cea42">yaml_emitter_s</a>
-<li>indents
-: <a class="el" href="structyaml__parser__s.html#2e29feac36a89f644d9640d44df62b74">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#d31c591593ccb78e6b04887bf4f162c8">yaml_emitter_s</a>
-<li>index
-: <a class="el" href="structyaml__mark__s.html#525306fb424a79f0b0d5a7d3990aa596">yaml_mark_s</a>
-, <a class="el" href="structyaml__alias__data__s.html#c45e17508386dec9163b4aa5cfb5312e">yaml_alias_data_s</a>
-<li>input
-: <a class="el" href="structyaml__parser__s.html#e800ef7fd42ad8bcbb69b116da3a7f53">yaml_parser_s</a>
-<li>items
-: <a class="el" href="structyaml__node__s.html#6b340541cc012ac5aacdcaa46ced097a">yaml_node_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_0x6b.html b/yaml-0.1.3/doc/html/functions_0x6b.html
deleted file mode 100644
index 1e58d92..0000000
--- a/yaml-0.1.3/doc/html/functions_0x6b.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li class="current"><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
-<p>
-<h3><a class="anchor" name="index_k">- k -</a></h3><ul>
-<li>key
-: <a class="el" href="structyaml__node__pair__s.html#c83746eb40b6b3a84f6da3143658ed4e">yaml_node_pair_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_0x6c.html b/yaml-0.1.3/doc/html/functions_0x6c.html
deleted file mode 100644
index 547009c..0000000
--- a/yaml-0.1.3/doc/html/functions_0x6c.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li class="current"><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
-<p>
-<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
-<li>last
-: <a class="el" href="structyaml__parser__s.html#ea4d8da24939825b2fadd368a71ec7de">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#d0c5410fff4602266a0c6e0af730dd70">yaml_emitter_s</a>
-<li>last_anchor_id
-: <a class="el" href="structyaml__emitter__s.html#0cede830c77a15df7f1b73b9023d2d11">yaml_emitter_s</a>
-<li>length
-: <a class="el" href="structyaml__emitter__s.html#4f72d57ad020803803e78922ecdec580">yaml_emitter_s</a>
-, <a class="el" href="structyaml__event__s.html#15618ee917746d28d97ad8eb9639e141">yaml_event_s</a>
-, <a class="el" href="structyaml__node__s.html#d90dd9926d9debbaa48eb5339bd9fc36">yaml_node_s</a>
-, <a class="el" href="structyaml__token__s.html#06e51daf74cf78103e00608c3c9132e2">yaml_token_s</a>
-<li>line
-: <a class="el" href="structyaml__mark__s.html#55952e426fc8a5f180a5e9c907ca926c">yaml_mark_s</a>
-, <a class="el" href="structyaml__emitter__s.html#4fe9295608f19a687e41ec3661383e88">yaml_emitter_s</a>
-<li>line_break
-: <a class="el" href="structyaml__emitter__s.html#84c1b884d805588495067ee98a8e7c50">yaml_emitter_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_0x6d.html b/yaml-0.1.3/doc/html/functions_0x6d.html
deleted file mode 100644
index a9ac0af..0000000
--- a/yaml-0.1.3/doc/html/functions_0x6d.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li class="current"><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
-<p>
-<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
-<li>major
-: <a class="el" href="structyaml__version__directive__s.html#d27326ff94b7772027c3009d1dd5e52b">yaml_version_directive_s</a>
-, <a class="el" href="structyaml__token__s.html#ac2ed466afd0390872774238dfcd152c">yaml_token_s</a>
-<li>mapping
-: <a class="el" href="structyaml__node__s.html#b18dc5c573885a08a92e113dcb7fb361">yaml_node_s</a>
-<li>mapping_context
-: <a class="el" href="structyaml__emitter__s.html#5a7527d8da86b28d95ff18b29f9d82f0">yaml_emitter_s</a>
-<li>mapping_start
-: <a class="el" href="structyaml__event__s.html#361b28413783f92797e6bfe03e9abaa1">yaml_event_s</a>
-<li>mark
-: <a class="el" href="structyaml__parser__s.html#aeeb58dc348e6e6f89d6a7c8fea8f734">yaml_parser_s</a>
-, <a class="el" href="structyaml__alias__data__s.html#9f8d87255bfc39df69068ed87b602e9f">yaml_alias_data_s</a>
-, <a class="el" href="structyaml__simple__key__s.html#d0f5dd11cbf2e4d6d81376511e2b6dfb">yaml_simple_key_s</a>
-<li>marks
-: <a class="el" href="structyaml__parser__s.html#d78837ae36e35d523e02c43d1ae3f30e">yaml_parser_s</a>
-<li>minor
-: <a class="el" href="structyaml__version__directive__s.html#89f074113501e6e150503f34b046dbd1">yaml_version_directive_s</a>
-, <a class="el" href="structyaml__token__s.html#97b9f537b24e8413e9fddc6a4b183d30">yaml_token_s</a>
-<li>multiline
-: <a class="el" href="structyaml__emitter__s.html#363a1aaaf512433ee7eab3083428cc70">yaml_emitter_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_0x6e.html b/yaml-0.1.3/doc/html/functions_0x6e.html
deleted file mode 100644
index 74eb679..0000000
--- a/yaml-0.1.3/doc/html/functions_0x6e.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li class="current"><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
-<p>
-<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
-<li>nodes
-: <a class="el" href="structyaml__document__s.html#a9eeab76b69cc84a6ab1b02c14cfd594">yaml_document_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_0x6f.html b/yaml-0.1.3/doc/html/functions_0x6f.html
deleted file mode 100644
index 84f8361..0000000
--- a/yaml-0.1.3/doc/html/functions_0x6f.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li class="current"><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
-<p>
-<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
-<li>offset
-: <a class="el" href="structyaml__parser__s.html#04a7ba684ce49b2300c236c561439b13">yaml_parser_s</a>
-<li>open_ended
-: <a class="el" href="structyaml__emitter__s.html#65e84454b702622c41a068768c144c51">yaml_emitter_s</a>
-<li>opened
-: <a class="el" href="structyaml__emitter__s.html#0234d7e9bfbe7cc6e12b60f90f5ec552">yaml_emitter_s</a>
-<li>output
-: <a class="el" href="structyaml__emitter__s.html#a975acf559cc87d79abdb732c994f56f">yaml_emitter_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_0x70.html b/yaml-0.1.3/doc/html/functions_0x70.html
deleted file mode 100644
index 373df39..0000000
--- a/yaml-0.1.3/doc/html/functions_0x70.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li class="current"><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
-<p>
-<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
-<li>pairs
-: <a class="el" href="structyaml__node__s.html#830a080bbed021eb230ef644e4680909">yaml_node_s</a>
-<li>plain_implicit
-: <a class="el" href="structyaml__event__s.html#c3600acbcc6b4787f1ec3511976a3151">yaml_event_s</a>
-<li>pointer
-: <a class="el" href="structyaml__parser__s.html#bea626790abfbcaeeb72a3772dc69e43">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#7615ab51145234f467984f3091558852">yaml_emitter_s</a>
-, <a class="el" href="structyaml__parser__s.html#8199466e3578374b3f984b6c0c4e2ae4">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#ed9370f42cea4dff82f96839ce760b5a">yaml_emitter_s</a>
-<li>possible
-: <a class="el" href="structyaml__simple__key__s.html#ad311b0fa599db04657a5177ec331f07">yaml_simple_key_s</a>
-<li>prefix
-: <a class="el" href="structyaml__tag__directive__s.html#514850fefaafbe65b2322da8c193a896">yaml_tag_directive_s</a>
-, <a class="el" href="structyaml__token__s.html#561b3730b9999cfe1010e77aca49c5b8">yaml_token_s</a>
-<li>problem
-: <a class="el" href="structyaml__parser__s.html#3dd8a43294cd420a433595a7a7d6e73d">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#e076ef7c85ae107a2233dd4206577800">yaml_emitter_s</a>
-<li>problem_mark
-: <a class="el" href="structyaml__parser__s.html#595b5412d39a4a9e441e5ad34fb059d9">yaml_parser_s</a>
-<li>problem_offset
-: <a class="el" href="structyaml__parser__s.html#e2d62a2ad45671c6dd89e18fb7c1c5bd">yaml_parser_s</a>
-<li>problem_value
-: <a class="el" href="structyaml__parser__s.html#8694691b20824f6595873b728cb3bc0f">yaml_parser_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_0x71.html b/yaml-0.1.3/doc/html/functions_0x71.html
deleted file mode 100644
index 6006312..0000000
--- a/yaml-0.1.3/doc/html/functions_0x71.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li class="current"><a href="functions_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
-<p>
-<h3><a class="anchor" name="index_q">- q -</a></h3><ul>
-<li>quoted_implicit
-: <a class="el" href="structyaml__event__s.html#9ce2441d08d9cf6a1bf9f28f5ee17f68">yaml_event_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_0x72.html b/yaml-0.1.3/doc/html/functions_0x72.html
deleted file mode 100644
index 30af78c..0000000
--- a/yaml-0.1.3/doc/html/functions_0x72.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
-      <li class="current"><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
-<p>
-<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
-<li>raw_buffer
-: <a class="el" href="structyaml__parser__s.html#e3e8481ceabdbf6796a7dc6265f740ac">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#6eeffbc9cd5beb89b679740b7f1d6d09">yaml_emitter_s</a>
-<li>read_handler
-: <a class="el" href="structyaml__parser__s.html#8c3af47a7a0750d437cba34699fcad30">yaml_parser_s</a>
-<li>read_handler_data
-: <a class="el" href="structyaml__parser__s.html#11f265cd495e814c8ee7d3dd78ff2ca9">yaml_parser_s</a>
-<li>references
-: <a class="el" href="structyaml__emitter__s.html#8f00c3c08e0d87bab11e91a4464a50bc">yaml_emitter_s</a>
-<li>required
-: <a class="el" href="structyaml__simple__key__s.html#cacccea26520e74c4c61f170fdcbb4c3">yaml_simple_key_s</a>
-<li>root_context
-: <a class="el" href="structyaml__emitter__s.html#70fb5f09cc60de989fbec2868f4db19e">yaml_emitter_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_0x73.html b/yaml-0.1.3/doc/html/functions_0x73.html
deleted file mode 100644
index b584ae1..0000000
--- a/yaml-0.1.3/doc/html/functions_0x73.html
+++ /dev/null
@@ -1,136 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li class="current"><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
-<p>
-<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
-<li>scalar
-: <a class="el" href="structyaml__token__s.html#35e3629351176dd91b38cbfc827a8b00">yaml_token_s</a>
-, <a class="el" href="structyaml__event__s.html#3753b4c5d10040d75f7c7f4b56c42549">yaml_event_s</a>
-, <a class="el" href="structyaml__node__s.html#688583a2649848aed700d7e07d9efac9">yaml_node_s</a>
-<li>scalar_data
-: <a class="el" href="structyaml__emitter__s.html#c3f80f4cb9c361b5fa4fa8f5cc04dbac">yaml_emitter_s</a>
-<li>sequence
-: <a class="el" href="structyaml__node__s.html#fe215962139fac93b965cc2acd71452b">yaml_node_s</a>
-<li>sequence_context
-: <a class="el" href="structyaml__emitter__s.html#9d20d55b0914ff81bf0f56e57ca7416e">yaml_emitter_s</a>
-<li>sequence_start
-: <a class="el" href="structyaml__event__s.html#632895e022fbf29ab24a816893a8580f">yaml_event_s</a>
-<li>serialized
-: <a class="el" href="structyaml__emitter__s.html#6c3e98c02ffae879717b3d09f9458936">yaml_emitter_s</a>
-<li>simple_key_allowed
-: <a class="el" href="structyaml__parser__s.html#cc85a7bfddc7ae9114cf115e43c89126">yaml_parser_s</a>
-<li>simple_key_context
-: <a class="el" href="structyaml__emitter__s.html#cc0db69cdae44c1385bbb2b6c207371b">yaml_emitter_s</a>
-<li>simple_keys
-: <a class="el" href="structyaml__parser__s.html#d5ce7de476c58fb6e1fdabbcc1c51659">yaml_parser_s</a>
-<li>single_quoted_allowed
-: <a class="el" href="structyaml__emitter__s.html#3729ff7e7add06a1a1d9067a557a59fc">yaml_emitter_s</a>
-<li>size
-: <a class="el" href="structyaml__emitter__s.html#53bdc6a00632b48c81098aad91a9fd8d">yaml_emitter_s</a>
-<li>size_written
-: <a class="el" href="structyaml__emitter__s.html#1851639b8f0e53b8e272c806d9fb648b">yaml_emitter_s</a>
-<li>start
-: <a class="el" href="structyaml__node__s.html#2e1001a0a7b068d4b2543a93d4cf60d4">yaml_node_s</a>
-, <a class="el" href="structyaml__emitter__s.html#d68af21e510adcfc2db43b31e791efe1">yaml_emitter_s</a>
-, <a class="el" href="structyaml__node__s.html#82afddfe1cf7f1a346d931ad4896d3de">yaml_node_s</a>
-, <a class="el" href="structyaml__emitter__s.html#28ec8053132a8e7cf29df983835754b7">yaml_emitter_s</a>
-, <a class="el" href="structyaml__document__s.html#a3f9a11d8fbe4ac2eada1786176bab89">yaml_document_s</a>
-, <a class="el" href="structyaml__parser__s.html#8cdb2fed4bb17b1d62d29fa06c53fef6">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#e8913d3c0bf4c987dc452efee2c802e3">yaml_emitter_s</a>
-, <a class="el" href="structyaml__parser__s.html#b9eddd3a112c3a4547bf87f6936aba94">yaml_parser_s</a>
-, <a class="el" href="structyaml__event__s.html#74d7f521a559305585009ab503bee16b">yaml_event_s</a>
-, <a class="el" href="structyaml__emitter__s.html#1c8f40a58f0a3061449b3fed02be145e">yaml_emitter_s</a>
-<li>start_implicit
-: <a class="el" href="structyaml__document__s.html#65c49e4f61ca5c2f6ecf410e1cc65787">yaml_document_s</a>
-<li>start_mark
-: <a class="el" href="structyaml__token__s.html#bdc5f4f2059c5a7bfe8e810b49a53980">yaml_token_s</a>
-, <a class="el" href="structyaml__event__s.html#eaf86eb588e75232e1b73e8213eb3e31">yaml_event_s</a>
-, <a class="el" href="structyaml__document__s.html#0a37311ebf8f6637e4bc1d280a879997">yaml_document_s</a>
-, <a class="el" href="structyaml__node__s.html#c17afa3b3a9ff4703bb4983163bfae5c">yaml_node_s</a>
-<li>state
-: <a class="el" href="structyaml__parser__s.html#069d39cdf587ac2188e69d8fb018be64">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#29f1d4f27ff9b9616c154f0730dd24ee">yaml_emitter_s</a>
-<li>states
-: <a class="el" href="structyaml__parser__s.html#57aa3c5fbfcaed8c17e046f0778c92bf">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#6dc87fbd5b074507e102b967492b135d">yaml_emitter_s</a>
-<li>stream_end_produced
-: <a class="el" href="structyaml__parser__s.html#63ccf04d623f36c04b62cfd1fc6fccb5">yaml_parser_s</a>
-<li>stream_start
-: <a class="el" href="structyaml__token__s.html#ab66b62f4507f4fd0e9d2b7548f588e6">yaml_token_s</a>
-, <a class="el" href="structyaml__event__s.html#18946df9b7c815dd7fb30103c02a9e24">yaml_event_s</a>
-<li>stream_start_produced
-: <a class="el" href="structyaml__parser__s.html#7fecde5abcce11406c271f7db08f7a05">yaml_parser_s</a>
-<li>string
-: <a class="el" href="structyaml__emitter__s.html#8803fe1047e8bcea9bdfcad0743fa0dd">yaml_emitter_s</a>
-, <a class="el" href="structyaml__parser__s.html#44fa7ca68030680244f3743ce5e35702">yaml_parser_s</a>
-<li>style
-: <a class="el" href="structyaml__node__s.html#362960375516e77a130c412ef10ef55d">yaml_node_s</a>
-, <a class="el" href="structyaml__event__s.html#2ac1305583a8e7e2247738116bca6b3b">yaml_event_s</a>
-, <a class="el" href="structyaml__emitter__s.html#cd1e83d220103aa24577038cfb1c2d21">yaml_emitter_s</a>
-, <a class="el" href="structyaml__token__s.html#530a8c4d78feaf5496fb9f461674382b">yaml_token_s</a>
-, <a class="el" href="structyaml__node__s.html#5b80d97f64e2867927404fedb65949c6">yaml_node_s</a>
-<li>suffix
-: <a class="el" href="structyaml__token__s.html#61344c49b73da5821cb06cab4cbab505">yaml_token_s</a>
-, <a class="el" href="structyaml__emitter__s.html#d9b61d5e9e05a47b2f873342ab226188">yaml_emitter_s</a>
-<li>suffix_length
-: <a class="el" href="structyaml__emitter__s.html#d83936bbd4b6b77c79555c71cccc8fb5">yaml_emitter_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_0x74.html b/yaml-0.1.3/doc/html/functions_0x74.html
deleted file mode 100644
index 0f33f7d..0000000
--- a/yaml-0.1.3/doc/html/functions_0x74.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li class="current"><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
-<p>
-<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
-<li>tag
-: <a class="el" href="structyaml__token__s.html#b281db5b7563c5489726768fe0fbaac7">yaml_token_s</a>
-, <a class="el" href="structyaml__event__s.html#4daf9ed2683d79f2be7e89ca7d06801c">yaml_event_s</a>
-, <a class="el" href="structyaml__node__s.html#a753358ea6d9d221b7b188832d47fefa">yaml_node_s</a>
-<li>tag_data
-: <a class="el" href="structyaml__emitter__s.html#3b947fbbc337d123af10c58abf1353a4">yaml_emitter_s</a>
-<li>tag_directive
-: <a class="el" href="structyaml__token__s.html#a8a1b9eeee539233e8461773894f4ea0">yaml_token_s</a>
-<li>tag_directives
-: <a class="el" href="structyaml__parser__s.html#9bdfc1888d4e30ffb43146377d44fba0">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#9dc51f2ccb8a517e2dc029e1af960258">yaml_emitter_s</a>
-, <a class="el" href="structyaml__event__s.html#162ce89a77e706d68649d40e1a520e1f">yaml_event_s</a>
-, <a class="el" href="structyaml__document__s.html#f1e09d0469fc24106f3790b1e3de09e1">yaml_document_s</a>
-<li>tail
-: <a class="el" href="structyaml__parser__s.html#22ad26583d8d1264e982188358aa79b6">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#cafa1e3cb872fa7917217469659fb273">yaml_emitter_s</a>
-<li>token_number
-: <a class="el" href="structyaml__simple__key__s.html#e098916893ad7415c5c041dd45d24a86">yaml_simple_key_s</a>
-<li>tokens
-: <a class="el" href="structyaml__parser__s.html#96d39b8333411d741ee1c13aa4141682">yaml_parser_s</a>
-<li>tokens_parsed
-: <a class="el" href="structyaml__parser__s.html#7358e72ad071fec3185a833a3a245690">yaml_parser_s</a>
-<li>top
-: <a class="el" href="structyaml__emitter__s.html#5779bcbfd04df64e42434b7599332d11">yaml_emitter_s</a>
-, <a class="el" href="structyaml__node__s.html#510326726569a06a11119f12649787cf">yaml_node_s</a>
-, <a class="el" href="structyaml__parser__s.html#24a3f3138b44de1914a3e54dbe0aeff7">yaml_parser_s</a>
-, <a class="el" href="structyaml__node__s.html#a420f88720907fe02b1d1595c9351d59">yaml_node_s</a>
-, <a class="el" href="structyaml__document__s.html#5ac36f59c4a0f28124c2e1630ca4f227">yaml_document_s</a>
-, <a class="el" href="structyaml__parser__s.html#490eddbfcc27787e47de631a3d2e09a8">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#8e3f468d814d2aa5e074f7da1648d34a">yaml_emitter_s</a>
-, <a class="el" href="structyaml__parser__s.html#b2678112fd2eaa8f588f2d6217aabc9d">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#afa8b6f21022ce2f4cb9b44ad15a535e">yaml_emitter_s</a>
-, <a class="el" href="structyaml__parser__s.html#e610673669f06d46146198a346796276">yaml_parser_s</a>
-<li>type
-: <a class="el" href="structyaml__token__s.html#a8aeb89e2e74f5e2f199484177d0ea14">yaml_token_s</a>
-, <a class="el" href="structyaml__event__s.html#ff08bc3df4859d5b3a804e8c011cac51">yaml_event_s</a>
-, <a class="el" href="structyaml__node__s.html#1db4ea72e13be65ec42339ce47d19669">yaml_node_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_0x75.html b/yaml-0.1.3/doc/html/functions_0x75.html
deleted file mode 100644
index 801a822..0000000
--- a/yaml-0.1.3/doc/html/functions_0x75.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li class="current"><a href="functions_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
-<p>
-<h3><a class="anchor" name="index_u">- u -</a></h3><ul>
-<li>unicode
-: <a class="el" href="structyaml__emitter__s.html#76372a2413f71a5b36bf77a58d8f5d40">yaml_emitter_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_0x76.html b/yaml-0.1.3/doc/html/functions_0x76.html
deleted file mode 100644
index 37b95c6..0000000
--- a/yaml-0.1.3/doc/html/functions_0x76.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
-      <li class="current"><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
-<p>
-<h3><a class="anchor" name="index_v">- v -</a></h3><ul>
-<li>value
-: <a class="el" href="structyaml__token__s.html#97ce52329d6093b63fba36817f8bd549">yaml_token_s</a>
-, <a class="el" href="structyaml__event__s.html#23436bdddb447d0fc217bab5c5b04a36">yaml_event_s</a>
-, <a class="el" href="structyaml__node__s.html#0d444412a29609d62699267ae72f971d">yaml_node_s</a>
-, <a class="el" href="structyaml__emitter__s.html#20246ec76d64854ff93629cf1b424d86">yaml_emitter_s</a>
-, <a class="el" href="structyaml__node__pair__s.html#56c1de2c11d509462d1bf03803bb8ab1">yaml_node_pair_s</a>
-<li>version_directive
-: <a class="el" href="structyaml__document__s.html#7d36862d070804b8bedb53866487ac6d">yaml_document_s</a>
-, <a class="el" href="structyaml__event__s.html#5cef7981358ecefdf9d4780b3eacd39b">yaml_event_s</a>
-, <a class="el" href="structyaml__token__s.html#41b30a59ca22d1020d6af4cc7cc0da47">yaml_token_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_0x77.html b/yaml-0.1.3/doc/html/functions_0x77.html
deleted file mode 100644
index b2980ec..0000000
--- a/yaml-0.1.3/doc/html/functions_0x77.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
-      <li class="current"><a href="functions_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
-<p>
-<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
-<li>whitespace
-: <a class="el" href="structyaml__emitter__s.html#160ed0cf1cc6116b65772d14ced2d867">yaml_emitter_s</a>
-<li>write_handler
-: <a class="el" href="structyaml__emitter__s.html#efa7e29ba8042ed1d133a02bb368ea3e">yaml_emitter_s</a>
-<li>write_handler_data
-: <a class="el" href="structyaml__emitter__s.html#6c4fe0176b69da64ac1ddc7e091967e5">yaml_emitter_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_vars.html b/yaml-0.1.3/doc/html/functions_vars.html
deleted file mode 100644
index ed1e4e6..0000000
--- a/yaml-0.1.3/doc/html/functions_vars.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields - Variables</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="functions_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
-<li>alias
-: <a class="el" href="structyaml__token__s.html#1f942353efa1972a38a0763afefabe0c">yaml_token_s</a>
-, <a class="el" href="structyaml__event__s.html#c21f0f1e12207b8fd4f02496259f6c0b">yaml_event_s</a>
-, <a class="el" href="structyaml__emitter__s.html#1129c6f9ae5cd3b437b8ab8767324f03">yaml_emitter_s</a>
-<li>aliases
-: <a class="el" href="structyaml__parser__s.html#0c10698207d727f9e5d9ced627d130ef">yaml_parser_s</a>
-<li>anchor
-: <a class="el" href="structyaml__emitter__s.html#6f2882bde71e478e29dc5b293def8739">yaml_emitter_s</a>
-, <a class="el" href="structyaml__alias__data__s.html#c4b9a352dd8ff747bfa63a54832d7962">yaml_alias_data_s</a>
-, <a class="el" href="structyaml__token__s.html#cc0f6636995f5fe332604b74571e6cfa">yaml_token_s</a>
-, <a class="el" href="structyaml__event__s.html#aa97ab683d28e5f611042d0fbd929125">yaml_event_s</a>
-<li>anchor_data
-: <a class="el" href="structyaml__emitter__s.html#d8883d967ee02e3e15e58bc2533188cc">yaml_emitter_s</a>
-<li>anchor_length
-: <a class="el" href="structyaml__emitter__s.html#ece73cc234475630032b1c75a735eeb5">yaml_emitter_s</a>
-<li>anchors
-: <a class="el" href="structyaml__emitter__s.html#d4e7a72cb8b1b67373ba6d76a5229e6b">yaml_emitter_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_vars_0x62.html b/yaml-0.1.3/doc/html/functions_vars_0x62.html
deleted file mode 100644
index 233c602..0000000
--- a/yaml-0.1.3/doc/html/functions_vars_0x62.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields - Variables</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions_vars.html#index_a"><span>a</span></a></li>
-      <li class="current"><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
-<li>best_indent
-: <a class="el" href="structyaml__emitter__s.html#33545f8924be89daf8b81dc905d558c0">yaml_emitter_s</a>
-<li>best_width
-: <a class="el" href="structyaml__emitter__s.html#56dde6b352bdf7d4031f89d2b5d704f6">yaml_emitter_s</a>
-<li>block_allowed
-: <a class="el" href="structyaml__emitter__s.html#64e05972897d02f606627ef0cf3c7420">yaml_emitter_s</a>
-<li>block_plain_allowed
-: <a class="el" href="structyaml__emitter__s.html#5b5f6c9d687d788c8dac86d213ef4c16">yaml_emitter_s</a>
-<li>buffer
-: <a class="el" href="structyaml__emitter__s.html#fb2700e9b866b5be0ff6c7549c719f81">yaml_emitter_s</a>
-, <a class="el" href="structyaml__parser__s.html#fc56b6252bd75ec87edec5c80a5c733e">yaml_parser_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_vars_0x63.html b/yaml-0.1.3/doc/html/functions_vars_0x63.html
deleted file mode 100644
index 0c71a4a..0000000
--- a/yaml-0.1.3/doc/html/functions_vars_0x63.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields - Variables</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
-      <li class="current"><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
-<li>canonical
-: <a class="el" href="structyaml__emitter__s.html#cb0259cdc5e2bb23faaf7266496df827">yaml_emitter_s</a>
-<li>closed
-: <a class="el" href="structyaml__emitter__s.html#978d894a219686d31d971899e31910cd">yaml_emitter_s</a>
-<li>column
-: <a class="el" href="structyaml__emitter__s.html#678fbbacad5d1f3f9bb7516282888b8a">yaml_emitter_s</a>
-, <a class="el" href="structyaml__mark__s.html#aa18357a6fb2bb377b969ce9ff589797">yaml_mark_s</a>
-<li>context
-: <a class="el" href="structyaml__parser__s.html#6779b67a23bbf7c401e4257d5875ae6b">yaml_parser_s</a>
-<li>context_mark
-: <a class="el" href="structyaml__parser__s.html#ce259eec6e570f94b98b252e1a632e88">yaml_parser_s</a>
-<li>current
-: <a class="el" href="structyaml__parser__s.html#3406d2ba7e969c09344d4ced8c855007">yaml_parser_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_vars_0x64.html b/yaml-0.1.3/doc/html/functions_vars_0x64.html
deleted file mode 100644
index b1a4d57..0000000
--- a/yaml-0.1.3/doc/html/functions_vars_0x64.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields - Variables</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li class="current"><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
-<li>data
-: <a class="el" href="structyaml__token__s.html#edb5be9b6b8f5ef6c129575e84f63605">yaml_token_s</a>
-, <a class="el" href="structyaml__event__s.html#0b8f9cce08e49459e4bab89035dbf6c6">yaml_event_s</a>
-, <a class="el" href="structyaml__node__s.html#7e1be921e921f2d0911e450a063b1344">yaml_node_s</a>
-<li>document
-: <a class="el" href="structyaml__emitter__s.html#f9cc8801cc9b46a4f45255c67a1574a7">yaml_emitter_s</a>
-, <a class="el" href="structyaml__parser__s.html#c3dad5822f49d86cfddc2e5e415a158c">yaml_parser_s</a>
-<li>document_end
-: <a class="el" href="structyaml__event__s.html#cffec5f24c01bb6bfb0c93a9bf1a803e">yaml_event_s</a>
-<li>document_start
-: <a class="el" href="structyaml__event__s.html#ed593fadbeb898d6d90b0c62522a82cc">yaml_event_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_vars_0x65.html b/yaml-0.1.3/doc/html/functions_vars_0x65.html
deleted file mode 100644
index ee00937..0000000
--- a/yaml-0.1.3/doc/html/functions_vars_0x65.html
+++ /dev/null
@@ -1,100 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields - Variables</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li class="current"><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
-<li>encoding
-: <a class="el" href="structyaml__token__s.html#ab75b9cb91438e0e1efe2522652cf478">yaml_token_s</a>
-, <a class="el" href="structyaml__event__s.html#92139ba6ae79089fd9a2f5f4aeaf733f">yaml_event_s</a>
-, <a class="el" href="structyaml__emitter__s.html#da17f19fa6248d6ee493684b03700857">yaml_emitter_s</a>
-, <a class="el" href="structyaml__parser__s.html#4f062e9d1fb1082bbf3996e46214905a">yaml_parser_s</a>
-<li>end
-: <a class="el" href="structyaml__document__s.html#dc9ffcca86a2684362428da69ffd3dea">yaml_document_s</a>
-, <a class="el" href="structyaml__parser__s.html#211a0aedc964ba8cd07cb7875faa464b">yaml_parser_s</a>
-, <a class="el" href="structyaml__document__s.html#f14fd1a6c1fd10088391f07349ba55e8">yaml_document_s</a>
-, <a class="el" href="structyaml__parser__s.html#a7fdc1ff8342636119934ac824a2ecc8">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#3b28127063323de1d88fc18cdb6adf8a">yaml_emitter_s</a>
-, <a class="el" href="structyaml__event__s.html#115b4a9797f3a72cd78d42c85100317c">yaml_event_s</a>
-, <a class="el" href="structyaml__emitter__s.html#55703a15e71c6b9551a2f4feb888bdcb">yaml_emitter_s</a>
-, <a class="el" href="structyaml__parser__s.html#ad74ffeb7f2eef0a12e34b0aac263ff3">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#42285849529f1b0eb9f4aac2eaef5204">yaml_emitter_s</a>
-, <a class="el" href="structyaml__parser__s.html#6ff1f802eb95bc45f13e8e73ec009828">yaml_parser_s</a>
-, <a class="el" href="structyaml__node__s.html#c9b3d891f9fcd5462289823716deca0e">yaml_node_s</a>
-, <a class="el" href="structyaml__parser__s.html#a768a9c29ae2c3015fdb84ea313844e2">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#6669a94bc18247491e59c709852be0d1">yaml_emitter_s</a>
-, <a class="el" href="structyaml__parser__s.html#41594b6495f4d31edb977cafb8cbaf78">yaml_parser_s</a>
-, <a class="el" href="structyaml__node__s.html#1827ba7f3e7f7e94171fa20ade25345d">yaml_node_s</a>
-<li>end_implicit
-: <a class="el" href="structyaml__document__s.html#59de90b4078659fd0f49377929afcac1">yaml_document_s</a>
-<li>end_mark
-: <a class="el" href="structyaml__event__s.html#9307f91473094c229738b03d223bc4ba">yaml_event_s</a>
-, <a class="el" href="structyaml__node__s.html#63144671fd16f94f72c6d537360f7328">yaml_node_s</a>
-, <a class="el" href="structyaml__token__s.html#97f08b38dfb0a5be26ef8831864a5311">yaml_token_s</a>
-, <a class="el" href="structyaml__document__s.html#9299efdaadf764f4d03641a3ee51e0d0">yaml_document_s</a>
-<li>eof
-: <a class="el" href="structyaml__parser__s.html#6129a99d45aee14ec705aa54dbb493b7">yaml_parser_s</a>
-<li>error
-: <a class="el" href="structyaml__emitter__s.html#fa2d6367a86ae6d43df14e24479bb0a7">yaml_emitter_s</a>
-, <a class="el" href="structyaml__parser__s.html#6c5c3488ff22c8a4d234ca8587fa1472">yaml_parser_s</a>
-<li>events
-: <a class="el" href="structyaml__emitter__s.html#3516b49eb7579e422750a94a9d7c1700">yaml_emitter_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_vars_0x66.html b/yaml-0.1.3/doc/html/functions_vars_0x66.html
deleted file mode 100644
index a2a8dab..0000000
--- a/yaml-0.1.3/doc/html/functions_vars_0x66.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields - Variables</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
-      <li class="current"><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
-<li>file
-: <a class="el" href="structyaml__parser__s.html#e69c2974e3c4c37e941a0e1971be15a9">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#bfe1e82cd5c4a180b1468e65ccfd1c61">yaml_emitter_s</a>
-<li>flow_level
-: <a class="el" href="structyaml__emitter__s.html#50f8e97c4290b83ebd646b4c4f5c5de9">yaml_emitter_s</a>
-, <a class="el" href="structyaml__parser__s.html#6a4bbbd3f58533e0969b7218c1e73fd4">yaml_parser_s</a>
-<li>flow_plain_allowed
-: <a class="el" href="structyaml__emitter__s.html#fd8496f5bb995bb5aacc349fd6b45bf5">yaml_emitter_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_vars_0x68.html b/yaml-0.1.3/doc/html/functions_vars_0x68.html
deleted file mode 100644
index 987aed4..0000000
--- a/yaml-0.1.3/doc/html/functions_vars_0x68.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields - Variables</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li class="current"><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
-<li>handle
-: <a class="el" href="structyaml__tag__directive__s.html#9934c62f2b18fd087a95af25c7739490">yaml_tag_directive_s</a>
-, <a class="el" href="structyaml__token__s.html#01665687653c945a6666dd9debaecd65">yaml_token_s</a>
-, <a class="el" href="structyaml__emitter__s.html#7f043a9092eef2d644cc8f1180386239">yaml_emitter_s</a>
-<li>handle_length
-: <a class="el" href="structyaml__emitter__s.html#3552cece6908f99518205e8cbe2c793a">yaml_emitter_s</a>
-<li>head
-: <a class="el" href="structyaml__parser__s.html#a1c7a1248ca22159a3e60ba45b386507">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#547dfd20576006e606ffb0d8042b4234">yaml_emitter_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_vars_0x69.html b/yaml-0.1.3/doc/html/functions_vars_0x69.html
deleted file mode 100644
index 9405d3e..0000000
--- a/yaml-0.1.3/doc/html/functions_vars_0x69.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields - Variables</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
-      <li class="current"><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
-<li>implicit
-: <a class="el" href="structyaml__event__s.html#3cbb10e276d55890ee2fa802dd6290e1">yaml_event_s</a>
-<li>indent
-: <a class="el" href="structyaml__parser__s.html#bad00703b649df32ee0d7b00b2f10403">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#93a73494a5d62464a67cc71f86ad9728">yaml_emitter_s</a>
-<li>indention
-: <a class="el" href="structyaml__emitter__s.html#407de8ff950b16b4254a381d4e5cea42">yaml_emitter_s</a>
-<li>indents
-: <a class="el" href="structyaml__parser__s.html#2e29feac36a89f644d9640d44df62b74">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#d31c591593ccb78e6b04887bf4f162c8">yaml_emitter_s</a>
-<li>index
-: <a class="el" href="structyaml__mark__s.html#525306fb424a79f0b0d5a7d3990aa596">yaml_mark_s</a>
-, <a class="el" href="structyaml__alias__data__s.html#c45e17508386dec9163b4aa5cfb5312e">yaml_alias_data_s</a>
-<li>input
-: <a class="el" href="structyaml__parser__s.html#e800ef7fd42ad8bcbb69b116da3a7f53">yaml_parser_s</a>
-<li>items
-: <a class="el" href="structyaml__node__s.html#6b340541cc012ac5aacdcaa46ced097a">yaml_node_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_vars_0x6b.html b/yaml-0.1.3/doc/html/functions_vars_0x6b.html
deleted file mode 100644
index 4f44333..0000000
--- a/yaml-0.1.3/doc/html/functions_vars_0x6b.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields - Variables</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
-      <li class="current"><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_k">- k -</a></h3><ul>
-<li>key
-: <a class="el" href="structyaml__node__pair__s.html#c83746eb40b6b3a84f6da3143658ed4e">yaml_node_pair_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_vars_0x6c.html b/yaml-0.1.3/doc/html/functions_vars_0x6c.html
deleted file mode 100644
index 6f3dd21..0000000
--- a/yaml-0.1.3/doc/html/functions_vars_0x6c.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields - Variables</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li class="current"><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
-<li>last
-: <a class="el" href="structyaml__parser__s.html#ea4d8da24939825b2fadd368a71ec7de">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#d0c5410fff4602266a0c6e0af730dd70">yaml_emitter_s</a>
-<li>last_anchor_id
-: <a class="el" href="structyaml__emitter__s.html#0cede830c77a15df7f1b73b9023d2d11">yaml_emitter_s</a>
-<li>length
-: <a class="el" href="structyaml__emitter__s.html#4f72d57ad020803803e78922ecdec580">yaml_emitter_s</a>
-, <a class="el" href="structyaml__event__s.html#15618ee917746d28d97ad8eb9639e141">yaml_event_s</a>
-, <a class="el" href="structyaml__node__s.html#d90dd9926d9debbaa48eb5339bd9fc36">yaml_node_s</a>
-, <a class="el" href="structyaml__token__s.html#06e51daf74cf78103e00608c3c9132e2">yaml_token_s</a>
-<li>line
-: <a class="el" href="structyaml__mark__s.html#55952e426fc8a5f180a5e9c907ca926c">yaml_mark_s</a>
-, <a class="el" href="structyaml__emitter__s.html#4fe9295608f19a687e41ec3661383e88">yaml_emitter_s</a>
-<li>line_break
-: <a class="el" href="structyaml__emitter__s.html#84c1b884d805588495067ee98a8e7c50">yaml_emitter_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_vars_0x6d.html b/yaml-0.1.3/doc/html/functions_vars_0x6d.html
deleted file mode 100644
index e806e32..0000000
--- a/yaml-0.1.3/doc/html/functions_vars_0x6d.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields - Variables</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li class="current"><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
-<li>major
-: <a class="el" href="structyaml__version__directive__s.html#d27326ff94b7772027c3009d1dd5e52b">yaml_version_directive_s</a>
-, <a class="el" href="structyaml__token__s.html#ac2ed466afd0390872774238dfcd152c">yaml_token_s</a>
-<li>mapping
-: <a class="el" href="structyaml__node__s.html#b18dc5c573885a08a92e113dcb7fb361">yaml_node_s</a>
-<li>mapping_context
-: <a class="el" href="structyaml__emitter__s.html#5a7527d8da86b28d95ff18b29f9d82f0">yaml_emitter_s</a>
-<li>mapping_start
-: <a class="el" href="structyaml__event__s.html#361b28413783f92797e6bfe03e9abaa1">yaml_event_s</a>
-<li>mark
-: <a class="el" href="structyaml__parser__s.html#aeeb58dc348e6e6f89d6a7c8fea8f734">yaml_parser_s</a>
-, <a class="el" href="structyaml__alias__data__s.html#9f8d87255bfc39df69068ed87b602e9f">yaml_alias_data_s</a>
-, <a class="el" href="structyaml__simple__key__s.html#d0f5dd11cbf2e4d6d81376511e2b6dfb">yaml_simple_key_s</a>
-<li>marks
-: <a class="el" href="structyaml__parser__s.html#d78837ae36e35d523e02c43d1ae3f30e">yaml_parser_s</a>
-<li>minor
-: <a class="el" href="structyaml__version__directive__s.html#89f074113501e6e150503f34b046dbd1">yaml_version_directive_s</a>
-, <a class="el" href="structyaml__token__s.html#97b9f537b24e8413e9fddc6a4b183d30">yaml_token_s</a>
-<li>multiline
-: <a class="el" href="structyaml__emitter__s.html#363a1aaaf512433ee7eab3083428cc70">yaml_emitter_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_vars_0x6e.html b/yaml-0.1.3/doc/html/functions_vars_0x6e.html
deleted file mode 100644
index a3a0090..0000000
--- a/yaml-0.1.3/doc/html/functions_vars_0x6e.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields - Variables</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li class="current"><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
-<li>nodes
-: <a class="el" href="structyaml__document__s.html#a9eeab76b69cc84a6ab1b02c14cfd594">yaml_document_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_vars_0x6f.html b/yaml-0.1.3/doc/html/functions_vars_0x6f.html
deleted file mode 100644
index e6b29df..0000000
--- a/yaml-0.1.3/doc/html/functions_vars_0x6f.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields - Variables</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li class="current"><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
-<li>offset
-: <a class="el" href="structyaml__parser__s.html#04a7ba684ce49b2300c236c561439b13">yaml_parser_s</a>
-<li>open_ended
-: <a class="el" href="structyaml__emitter__s.html#65e84454b702622c41a068768c144c51">yaml_emitter_s</a>
-<li>opened
-: <a class="el" href="structyaml__emitter__s.html#0234d7e9bfbe7cc6e12b60f90f5ec552">yaml_emitter_s</a>
-<li>output
-: <a class="el" href="structyaml__emitter__s.html#a975acf559cc87d79abdb732c994f56f">yaml_emitter_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_vars_0x70.html b/yaml-0.1.3/doc/html/functions_vars_0x70.html
deleted file mode 100644
index 240d303..0000000
--- a/yaml-0.1.3/doc/html/functions_vars_0x70.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields - Variables</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
-      <li class="current"><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
-<li>pairs
-: <a class="el" href="structyaml__node__s.html#830a080bbed021eb230ef644e4680909">yaml_node_s</a>
-<li>plain_implicit
-: <a class="el" href="structyaml__event__s.html#c3600acbcc6b4787f1ec3511976a3151">yaml_event_s</a>
-<li>pointer
-: <a class="el" href="structyaml__parser__s.html#bea626790abfbcaeeb72a3772dc69e43">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#7615ab51145234f467984f3091558852">yaml_emitter_s</a>
-, <a class="el" href="structyaml__parser__s.html#8199466e3578374b3f984b6c0c4e2ae4">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#ed9370f42cea4dff82f96839ce760b5a">yaml_emitter_s</a>
-<li>possible
-: <a class="el" href="structyaml__simple__key__s.html#ad311b0fa599db04657a5177ec331f07">yaml_simple_key_s</a>
-<li>prefix
-: <a class="el" href="structyaml__tag__directive__s.html#514850fefaafbe65b2322da8c193a896">yaml_tag_directive_s</a>
-, <a class="el" href="structyaml__token__s.html#561b3730b9999cfe1010e77aca49c5b8">yaml_token_s</a>
-<li>problem
-: <a class="el" href="structyaml__parser__s.html#3dd8a43294cd420a433595a7a7d6e73d">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#e076ef7c85ae107a2233dd4206577800">yaml_emitter_s</a>
-<li>problem_mark
-: <a class="el" href="structyaml__parser__s.html#595b5412d39a4a9e441e5ad34fb059d9">yaml_parser_s</a>
-<li>problem_offset
-: <a class="el" href="structyaml__parser__s.html#e2d62a2ad45671c6dd89e18fb7c1c5bd">yaml_parser_s</a>
-<li>problem_value
-: <a class="el" href="structyaml__parser__s.html#8694691b20824f6595873b728cb3bc0f">yaml_parser_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_vars_0x71.html b/yaml-0.1.3/doc/html/functions_vars_0x71.html
deleted file mode 100644
index 76cdff5..0000000
--- a/yaml-0.1.3/doc/html/functions_vars_0x71.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields - Variables</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li class="current"><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_q">- q -</a></h3><ul>
-<li>quoted_implicit
-: <a class="el" href="structyaml__event__s.html#9ce2441d08d9cf6a1bf9f28f5ee17f68">yaml_event_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_vars_0x72.html b/yaml-0.1.3/doc/html/functions_vars_0x72.html
deleted file mode 100644
index a90afb4..0000000
--- a/yaml-0.1.3/doc/html/functions_vars_0x72.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields - Variables</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
-      <li class="current"><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
-<li>raw_buffer
-: <a class="el" href="structyaml__parser__s.html#e3e8481ceabdbf6796a7dc6265f740ac">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#6eeffbc9cd5beb89b679740b7f1d6d09">yaml_emitter_s</a>
-<li>read_handler
-: <a class="el" href="structyaml__parser__s.html#8c3af47a7a0750d437cba34699fcad30">yaml_parser_s</a>
-<li>read_handler_data
-: <a class="el" href="structyaml__parser__s.html#11f265cd495e814c8ee7d3dd78ff2ca9">yaml_parser_s</a>
-<li>references
-: <a class="el" href="structyaml__emitter__s.html#8f00c3c08e0d87bab11e91a4464a50bc">yaml_emitter_s</a>
-<li>required
-: <a class="el" href="structyaml__simple__key__s.html#cacccea26520e74c4c61f170fdcbb4c3">yaml_simple_key_s</a>
-<li>root_context
-: <a class="el" href="structyaml__emitter__s.html#70fb5f09cc60de989fbec2868f4db19e">yaml_emitter_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_vars_0x73.html b/yaml-0.1.3/doc/html/functions_vars_0x73.html
deleted file mode 100644
index 2b6d9bd..0000000
--- a/yaml-0.1.3/doc/html/functions_vars_0x73.html
+++ /dev/null
@@ -1,136 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields - Variables</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li class="current"><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
-<li>scalar
-: <a class="el" href="structyaml__token__s.html#35e3629351176dd91b38cbfc827a8b00">yaml_token_s</a>
-, <a class="el" href="structyaml__event__s.html#3753b4c5d10040d75f7c7f4b56c42549">yaml_event_s</a>
-, <a class="el" href="structyaml__node__s.html#688583a2649848aed700d7e07d9efac9">yaml_node_s</a>
-<li>scalar_data
-: <a class="el" href="structyaml__emitter__s.html#c3f80f4cb9c361b5fa4fa8f5cc04dbac">yaml_emitter_s</a>
-<li>sequence
-: <a class="el" href="structyaml__node__s.html#fe215962139fac93b965cc2acd71452b">yaml_node_s</a>
-<li>sequence_context
-: <a class="el" href="structyaml__emitter__s.html#9d20d55b0914ff81bf0f56e57ca7416e">yaml_emitter_s</a>
-<li>sequence_start
-: <a class="el" href="structyaml__event__s.html#632895e022fbf29ab24a816893a8580f">yaml_event_s</a>
-<li>serialized
-: <a class="el" href="structyaml__emitter__s.html#6c3e98c02ffae879717b3d09f9458936">yaml_emitter_s</a>
-<li>simple_key_allowed
-: <a class="el" href="structyaml__parser__s.html#cc85a7bfddc7ae9114cf115e43c89126">yaml_parser_s</a>
-<li>simple_key_context
-: <a class="el" href="structyaml__emitter__s.html#cc0db69cdae44c1385bbb2b6c207371b">yaml_emitter_s</a>
-<li>simple_keys
-: <a class="el" href="structyaml__parser__s.html#d5ce7de476c58fb6e1fdabbcc1c51659">yaml_parser_s</a>
-<li>single_quoted_allowed
-: <a class="el" href="structyaml__emitter__s.html#3729ff7e7add06a1a1d9067a557a59fc">yaml_emitter_s</a>
-<li>size
-: <a class="el" href="structyaml__emitter__s.html#53bdc6a00632b48c81098aad91a9fd8d">yaml_emitter_s</a>
-<li>size_written
-: <a class="el" href="structyaml__emitter__s.html#1851639b8f0e53b8e272c806d9fb648b">yaml_emitter_s</a>
-<li>start
-: <a class="el" href="structyaml__node__s.html#2e1001a0a7b068d4b2543a93d4cf60d4">yaml_node_s</a>
-, <a class="el" href="structyaml__emitter__s.html#d68af21e510adcfc2db43b31e791efe1">yaml_emitter_s</a>
-, <a class="el" href="structyaml__node__s.html#82afddfe1cf7f1a346d931ad4896d3de">yaml_node_s</a>
-, <a class="el" href="structyaml__emitter__s.html#28ec8053132a8e7cf29df983835754b7">yaml_emitter_s</a>
-, <a class="el" href="structyaml__document__s.html#a3f9a11d8fbe4ac2eada1786176bab89">yaml_document_s</a>
-, <a class="el" href="structyaml__parser__s.html#8cdb2fed4bb17b1d62d29fa06c53fef6">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#e8913d3c0bf4c987dc452efee2c802e3">yaml_emitter_s</a>
-, <a class="el" href="structyaml__parser__s.html#b9eddd3a112c3a4547bf87f6936aba94">yaml_parser_s</a>
-, <a class="el" href="structyaml__event__s.html#74d7f521a559305585009ab503bee16b">yaml_event_s</a>
-, <a class="el" href="structyaml__emitter__s.html#1c8f40a58f0a3061449b3fed02be145e">yaml_emitter_s</a>
-<li>start_implicit
-: <a class="el" href="structyaml__document__s.html#65c49e4f61ca5c2f6ecf410e1cc65787">yaml_document_s</a>
-<li>start_mark
-: <a class="el" href="structyaml__token__s.html#bdc5f4f2059c5a7bfe8e810b49a53980">yaml_token_s</a>
-, <a class="el" href="structyaml__event__s.html#eaf86eb588e75232e1b73e8213eb3e31">yaml_event_s</a>
-, <a class="el" href="structyaml__document__s.html#0a37311ebf8f6637e4bc1d280a879997">yaml_document_s</a>
-, <a class="el" href="structyaml__node__s.html#c17afa3b3a9ff4703bb4983163bfae5c">yaml_node_s</a>
-<li>state
-: <a class="el" href="structyaml__parser__s.html#069d39cdf587ac2188e69d8fb018be64">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#29f1d4f27ff9b9616c154f0730dd24ee">yaml_emitter_s</a>
-<li>states
-: <a class="el" href="structyaml__parser__s.html#57aa3c5fbfcaed8c17e046f0778c92bf">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#6dc87fbd5b074507e102b967492b135d">yaml_emitter_s</a>
-<li>stream_end_produced
-: <a class="el" href="structyaml__parser__s.html#63ccf04d623f36c04b62cfd1fc6fccb5">yaml_parser_s</a>
-<li>stream_start
-: <a class="el" href="structyaml__token__s.html#ab66b62f4507f4fd0e9d2b7548f588e6">yaml_token_s</a>
-, <a class="el" href="structyaml__event__s.html#18946df9b7c815dd7fb30103c02a9e24">yaml_event_s</a>
-<li>stream_start_produced
-: <a class="el" href="structyaml__parser__s.html#7fecde5abcce11406c271f7db08f7a05">yaml_parser_s</a>
-<li>string
-: <a class="el" href="structyaml__emitter__s.html#8803fe1047e8bcea9bdfcad0743fa0dd">yaml_emitter_s</a>
-, <a class="el" href="structyaml__parser__s.html#44fa7ca68030680244f3743ce5e35702">yaml_parser_s</a>
-<li>style
-: <a class="el" href="structyaml__node__s.html#362960375516e77a130c412ef10ef55d">yaml_node_s</a>
-, <a class="el" href="structyaml__event__s.html#2ac1305583a8e7e2247738116bca6b3b">yaml_event_s</a>
-, <a class="el" href="structyaml__emitter__s.html#cd1e83d220103aa24577038cfb1c2d21">yaml_emitter_s</a>
-, <a class="el" href="structyaml__token__s.html#530a8c4d78feaf5496fb9f461674382b">yaml_token_s</a>
-, <a class="el" href="structyaml__node__s.html#5b80d97f64e2867927404fedb65949c6">yaml_node_s</a>
-<li>suffix
-: <a class="el" href="structyaml__token__s.html#61344c49b73da5821cb06cab4cbab505">yaml_token_s</a>
-, <a class="el" href="structyaml__emitter__s.html#d9b61d5e9e05a47b2f873342ab226188">yaml_emitter_s</a>
-<li>suffix_length
-: <a class="el" href="structyaml__emitter__s.html#d83936bbd4b6b77c79555c71cccc8fb5">yaml_emitter_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_vars_0x74.html b/yaml-0.1.3/doc/html/functions_vars_0x74.html
deleted file mode 100644
index 8855780..0000000
--- a/yaml-0.1.3/doc/html/functions_vars_0x74.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields - Variables</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li class="current"><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
-<li>tag
-: <a class="el" href="structyaml__token__s.html#b281db5b7563c5489726768fe0fbaac7">yaml_token_s</a>
-, <a class="el" href="structyaml__event__s.html#4daf9ed2683d79f2be7e89ca7d06801c">yaml_event_s</a>
-, <a class="el" href="structyaml__node__s.html#a753358ea6d9d221b7b188832d47fefa">yaml_node_s</a>
-<li>tag_data
-: <a class="el" href="structyaml__emitter__s.html#3b947fbbc337d123af10c58abf1353a4">yaml_emitter_s</a>
-<li>tag_directive
-: <a class="el" href="structyaml__token__s.html#a8a1b9eeee539233e8461773894f4ea0">yaml_token_s</a>
-<li>tag_directives
-: <a class="el" href="structyaml__parser__s.html#9bdfc1888d4e30ffb43146377d44fba0">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#9dc51f2ccb8a517e2dc029e1af960258">yaml_emitter_s</a>
-, <a class="el" href="structyaml__event__s.html#162ce89a77e706d68649d40e1a520e1f">yaml_event_s</a>
-, <a class="el" href="structyaml__document__s.html#f1e09d0469fc24106f3790b1e3de09e1">yaml_document_s</a>
-<li>tail
-: <a class="el" href="structyaml__parser__s.html#22ad26583d8d1264e982188358aa79b6">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#cafa1e3cb872fa7917217469659fb273">yaml_emitter_s</a>
-<li>token_number
-: <a class="el" href="structyaml__simple__key__s.html#e098916893ad7415c5c041dd45d24a86">yaml_simple_key_s</a>
-<li>tokens
-: <a class="el" href="structyaml__parser__s.html#96d39b8333411d741ee1c13aa4141682">yaml_parser_s</a>
-<li>tokens_parsed
-: <a class="el" href="structyaml__parser__s.html#7358e72ad071fec3185a833a3a245690">yaml_parser_s</a>
-<li>top
-: <a class="el" href="structyaml__emitter__s.html#5779bcbfd04df64e42434b7599332d11">yaml_emitter_s</a>
-, <a class="el" href="structyaml__node__s.html#510326726569a06a11119f12649787cf">yaml_node_s</a>
-, <a class="el" href="structyaml__parser__s.html#24a3f3138b44de1914a3e54dbe0aeff7">yaml_parser_s</a>
-, <a class="el" href="structyaml__node__s.html#a420f88720907fe02b1d1595c9351d59">yaml_node_s</a>
-, <a class="el" href="structyaml__document__s.html#5ac36f59c4a0f28124c2e1630ca4f227">yaml_document_s</a>
-, <a class="el" href="structyaml__parser__s.html#490eddbfcc27787e47de631a3d2e09a8">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#8e3f468d814d2aa5e074f7da1648d34a">yaml_emitter_s</a>
-, <a class="el" href="structyaml__parser__s.html#b2678112fd2eaa8f588f2d6217aabc9d">yaml_parser_s</a>
-, <a class="el" href="structyaml__emitter__s.html#afa8b6f21022ce2f4cb9b44ad15a535e">yaml_emitter_s</a>
-, <a class="el" href="structyaml__parser__s.html#e610673669f06d46146198a346796276">yaml_parser_s</a>
-<li>type
-: <a class="el" href="structyaml__token__s.html#a8aeb89e2e74f5e2f199484177d0ea14">yaml_token_s</a>
-, <a class="el" href="structyaml__event__s.html#ff08bc3df4859d5b3a804e8c011cac51">yaml_event_s</a>
-, <a class="el" href="structyaml__node__s.html#1db4ea72e13be65ec42339ce47d19669">yaml_node_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_vars_0x75.html b/yaml-0.1.3/doc/html/functions_vars_0x75.html
deleted file mode 100644
index 95ba017..0000000
--- a/yaml-0.1.3/doc/html/functions_vars_0x75.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields - Variables</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li class="current"><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_u">- u -</a></h3><ul>
-<li>unicode
-: <a class="el" href="structyaml__emitter__s.html#76372a2413f71a5b36bf77a58d8f5d40">yaml_emitter_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_vars_0x76.html b/yaml-0.1.3/doc/html/functions_vars_0x76.html
deleted file mode 100644
index 726dda2..0000000
--- a/yaml-0.1.3/doc/html/functions_vars_0x76.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields - Variables</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
-      <li class="current"><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_v">- v -</a></h3><ul>
-<li>value
-: <a class="el" href="structyaml__token__s.html#97ce52329d6093b63fba36817f8bd549">yaml_token_s</a>
-, <a class="el" href="structyaml__event__s.html#23436bdddb447d0fc217bab5c5b04a36">yaml_event_s</a>
-, <a class="el" href="structyaml__node__s.html#0d444412a29609d62699267ae72f971d">yaml_node_s</a>
-, <a class="el" href="structyaml__emitter__s.html#20246ec76d64854ff93629cf1b424d86">yaml_emitter_s</a>
-, <a class="el" href="structyaml__node__pair__s.html#56c1de2c11d509462d1bf03803bb8ab1">yaml_node_pair_s</a>
-<li>version_directive
-: <a class="el" href="structyaml__document__s.html#7d36862d070804b8bedb53866487ac6d">yaml_document_s</a>
-, <a class="el" href="structyaml__event__s.html#5cef7981358ecefdf9d4780b3eacd39b">yaml_event_s</a>
-, <a class="el" href="structyaml__token__s.html#41b30a59ca22d1020d6af4cc7cc0da47">yaml_token_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/functions_vars_0x77.html b/yaml-0.1.3/doc/html/functions_vars_0x77.html
deleted file mode 100644
index 8e6b4fa..0000000
--- a/yaml-0.1.3/doc/html/functions_vars_0x77.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields - Variables</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="functions_vars.html#index_a"><span>a</span></a></li>
-      <li><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
-      <li><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
-      <li><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
-      <li><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
-      <li><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
-      <li><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
-      <li><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
-      <li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
-      <li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
-      <li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
-      <li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
-      <li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
-      <li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
-      <li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
-      <li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
-      <li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
-      <li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
-      <li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
-      <li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
-      <li class="current"><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
-<li>whitespace
-: <a class="el" href="structyaml__emitter__s.html#160ed0cf1cc6116b65772d14ced2d867">yaml_emitter_s</a>
-<li>write_handler
-: <a class="el" href="structyaml__emitter__s.html#efa7e29ba8042ed1d133a02bb368ea3e">yaml_emitter_s</a>
-<li>write_handler_data
-: <a class="el" href="structyaml__emitter__s.html#6c4fe0176b69da64ac1ddc7e091967e5">yaml_emitter_s</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/globals.html b/yaml-0.1.3/doc/html/globals.html
deleted file mode 100644
index 581f899..0000000
--- a/yaml-0.1.3/doc/html/globals.html
+++ /dev/null
@@ -1,459 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="globals.html"><span>All</span></a></li>
-      <li><a href="globals_func.html"><span>Functions</span></a></li>
-      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
-      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
-      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="globals_defs.html"><span>Defines</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="globals.html#index_y"><span>y</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
-<p>
-<h3><a class="anchor" name="index_y">- y -</a></h3><ul>
-<li>yaml_alias_data_t
-: <a class="el" href="group__parser.html#g1434228b82f5f90d3c8ccda816e9ca9d">yaml.h</a>
-<li>YAML_ALIAS_EVENT
-: <a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577c8c3ce47705cfbd49a87a32bdbe544eb7">yaml.h</a>
-<li>yaml_alias_event_initialize()
-: <a class="el" href="group__events.html#gde4c15b75eb9a8035e04d4f0dd23f005">yaml.h</a>
-<li>YAML_ALIAS_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd080c398f6fc31f9ab35c7cf94cf948c2">yaml.h</a>
-<li>YAML_ANCHOR_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd7f0855938c5ccc4820b68ddd7985a5d0">yaml.h</a>
-<li>YAML_ANY_BREAK
-: <a class="el" href="group__basic.html#gg912ad8c893126133fab5e4231db3017e052bd56adef565c33a86fcc05b49513f">yaml.h</a>
-<li>YAML_ANY_ENCODING
-: <a class="el" href="group__basic.html#ggb88ee52b5d722e644c1cb4d1afcccdd9b61d2a81b8e698e642ce6ad69612fa7f">yaml.h</a>
-<li>YAML_ANY_MAPPING_STYLE
-: <a class="el" href="group__styles.html#gg1efef592e2e3df6f00432c04ef77d98fc580a83312204ea142c3d08a4954a74a">yaml.h</a>
-<li>YAML_ANY_SCALAR_STYLE
-: <a class="el" href="group__styles.html#gg435ae8886b70c16830d853b6c566e2e0ead38b3e6846302ee032927267c34ae0">yaml.h</a>
-<li>YAML_ANY_SEQUENCE_STYLE
-: <a class="el" href="group__styles.html#gg5079a4ab96e398371c60423abd88ccc05a10d6f70339876b76e5a002dd16212f">yaml.h</a>
-<li>YAML_BLOCK_END_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd439948425097b4fc853f39f0de14a5ff">yaml.h</a>
-<li>YAML_BLOCK_ENTRY_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbda9bdf1d6da41fcd4d356c7bcfa0227b4">yaml.h</a>
-<li>YAML_BLOCK_MAPPING_START_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd9a95db99bd99f7f9b4e1e879106297dc">yaml.h</a>
-<li>YAML_BLOCK_MAPPING_STYLE
-: <a class="el" href="group__styles.html#gg1efef592e2e3df6f00432c04ef77d98fd5e70fe97009c8247a45f4620f071874">yaml.h</a>
-<li>YAML_BLOCK_SEQUENCE_START_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd4bfddc427da159168ee47267cbeea94f">yaml.h</a>
-<li>YAML_BLOCK_SEQUENCE_STYLE
-: <a class="el" href="group__styles.html#gg5079a4ab96e398371c60423abd88ccc065f99099ef4ecdcf99bbdd798b5dcbb5">yaml.h</a>
-<li>YAML_BOOL_TAG
-: <a class="el" href="group__nodes.html#g312629a1f51e91b136352db988d4d771">yaml.h</a>
-<li>yaml_break_e
-: <a class="el" href="group__basic.html#g912ad8c893126133fab5e4231db3017e">yaml.h</a>
-<li>yaml_break_t
-: <a class="el" href="group__basic.html#g64d1365e1acd4deeab50d6b48e39cb6d">yaml.h</a>
-<li>yaml_char_t
-: <a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml.h</a>
-<li>YAML_COMPOSER_ERROR
-: <a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea0143d6eb640e50a1b1ec843cc54ab15f2b">yaml.h</a>
-<li>YAML_CR_BREAK
-: <a class="el" href="group__basic.html#gg912ad8c893126133fab5e4231db3017e116a98ba4ed0bacfdf098a7d5beeb9d4">yaml.h</a>
-<li>YAML_CRLN_BREAK
-: <a class="el" href="group__basic.html#gg912ad8c893126133fab5e4231db3017e15f8daa406870ebfe82b85781c2468f3">yaml.h</a>
-<li>YAML_DECLARE
-: <a class="el" href="group__export.html#g0791fd3e1d85ed53711b1feaae131f93">yaml.h</a>
-<li>YAML_DEFAULT_MAPPING_TAG
-: <a class="el" href="group__nodes.html#gf7b1f8f0ce5665794510cd3841802a5f">yaml.h</a>
-<li>YAML_DEFAULT_SCALAR_TAG
-: <a class="el" href="group__nodes.html#gf6b0c4e819b8f6915515a4f70065aaaa">yaml.h</a>
-<li>YAML_DEFAULT_SEQUENCE_TAG
-: <a class="el" href="group__nodes.html#gf195b67002518702e27746d6b4da6124">yaml.h</a>
-<li>yaml_document_add_mapping()
-: <a class="el" href="group__nodes.html#g45a9f8288704f99cd81dc5cb31329d34">yaml.h</a>
-<li>yaml_document_add_scalar()
-: <a class="el" href="group__nodes.html#g45dab8b983b58a005557d4b01f5057b0">yaml.h</a>
-<li>yaml_document_add_sequence()
-: <a class="el" href="group__nodes.html#g83b2f7fdd9a439397a42016bddad7786">yaml.h</a>
-<li>yaml_document_append_mapping_pair()
-: <a class="el" href="group__nodes.html#g2db27002d8a9ae06b1729d0ee06553d2">yaml.h</a>
-<li>yaml_document_append_sequence_item()
-: <a class="el" href="group__nodes.html#g16435917cd6c0261cd390fa8cf173b1b">yaml.h</a>
-<li>yaml_document_delete()
-: <a class="el" href="group__nodes.html#g2754b1544fb4e110e83fafbc708b0672">yaml.h</a>
-<li>YAML_DOCUMENT_END_EVENT
-: <a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577c355ec471f963827c96512e529676276f">yaml.h</a>
-<li>yaml_document_end_event_initialize()
-: <a class="el" href="group__events.html#g8bae16548ee88f8a5ca15204f8c30344">yaml.h</a>
-<li>YAML_DOCUMENT_END_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd8d0908a82229f44d5ea92a2c380f4579">yaml.h</a>
-<li>yaml_document_get_node()
-: <a class="el" href="group__nodes.html#gfa1feabc9747dbded4dca24e27d3c21a">yaml.h</a>
-<li>yaml_document_get_root_node()
-: <a class="el" href="group__nodes.html#g40eeaa68fb2f3be34c4fe34e7597d324">yaml.h</a>
-<li>yaml_document_initialize()
-: <a class="el" href="group__nodes.html#g62a485c96f3b7962436a0da5e6f3cc89">yaml.h</a>
-<li>YAML_DOCUMENT_START_EVENT
-: <a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577cf4ca2b0f538029cf054cdebd09d3d6d3">yaml.h</a>
-<li>yaml_document_start_event_initialize()
-: <a class="el" href="group__events.html#g527e89302e1c969fbea5aa45664bf51c">yaml.h</a>
-<li>YAML_DOCUMENT_START_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdbcafcdb506886387f93cca734ddfd670">yaml.h</a>
-<li>yaml_document_t
-: <a class="el" href="group__nodes.html#gd94e064e95baeb22e4f7acc7804e8479">yaml.h</a>
-<li>YAML_DOUBLE_QUOTED_SCALAR_STYLE
-: <a class="el" href="group__styles.html#gg435ae8886b70c16830d853b6c566e2e0f6fdfd14690361f4937d67d1f0f011d3">yaml.h</a>
-<li>YAML_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721ee36d46c1facecfd73fab73e3343226e">yaml.h</a>
-<li>YAML_EMIT_BLOCK_MAPPING_KEY_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa72158495cae63b8c3d7c389b1281baeec05">yaml.h</a>
-<li>YAML_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa7214aa3c6bf2f2d976c47289c741d7a8704">yaml.h</a>
-<li>YAML_EMIT_BLOCK_MAPPING_VALUE_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa7217e0f7fac64fc64bb2bc9fe2ec93ca564">yaml.h</a>
-<li>YAML_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa72168af7c090c6d0187788e390341f0cc4d">yaml.h</a>
-<li>YAML_EMIT_BLOCK_SEQUENCE_ITEM_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa7218197c180c3cefee7b67304e17b52c5ff">yaml.h</a>
-<li>YAML_EMIT_DOCUMENT_CONTENT_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa7215ce3ed6155496a6fbd7384e310c58bec">yaml.h</a>
-<li>YAML_EMIT_DOCUMENT_END_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721100cad4538be033202da4bb85f8443d3">yaml.h</a>
-<li>YAML_EMIT_DOCUMENT_START_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721678d8c3146f0b2c84e0fc537a9b1109f">yaml.h</a>
-<li>YAML_EMIT_END_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa7212a0232912eaf4eeb06594ee6157dfbc0">yaml.h</a>
-<li>YAML_EMIT_FIRST_DOCUMENT_START_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721b1ae25188f02581a137f66c4b6e084ae">yaml.h</a>
-<li>YAML_EMIT_FLOW_MAPPING_FIRST_KEY_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721b811f3d642dacc7c413af2c32356f894">yaml.h</a>
-<li>YAML_EMIT_FLOW_MAPPING_KEY_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721babf835ee5cd4c6de2231e2a49e40626">yaml.h</a>
-<li>YAML_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721a6f687a6b57e727f0e7b7a2687ad7383">yaml.h</a>
-<li>YAML_EMIT_FLOW_MAPPING_VALUE_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721cb6dbcb535248b8fde779aeedc957b2e">yaml.h</a>
-<li>YAML_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa7215a36fc535f3a5720fbb86712959e5654">yaml.h</a>
-<li>YAML_EMIT_FLOW_SEQUENCE_ITEM_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721ded45f1dee80027d7b9c6ce061c08767">yaml.h</a>
-<li>YAML_EMIT_STREAM_START_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721a013a33dab710fe9a30ba014af27b81d">yaml.h</a>
-<li>yaml_emitter_close()
-: <a class="el" href="group__emitter.html#ga91442864679280985df14b2d96b8c42">yaml.h</a>
-<li>yaml_emitter_delete()
-: <a class="el" href="group__emitter.html#gd705212f3a5150e3f00075fd90bc8c3d">yaml.h</a>
-<li>yaml_emitter_dump()
-: <a class="el" href="group__emitter.html#g5f0306abe9bff373b5bc339913b3769c">yaml.h</a>
-<li>yaml_emitter_emit()
-: <a class="el" href="group__emitter.html#g4d6c0f8e712797e2660e69479fdae433">yaml.h</a>
-<li>YAML_EMITTER_ERROR
-: <a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea018ec99a26382dd2853a5550027f6e9db1">yaml.h</a>
-<li>yaml_emitter_flush()
-: <a class="el" href="group__emitter.html#gcaf24456e2bf85bc5654cbd7d828055f">yaml.h</a>
-<li>yaml_emitter_initialize()
-: <a class="el" href="group__emitter.html#g83649205374285802fc27aa293ecd111">yaml.h</a>
-<li>yaml_emitter_open()
-: <a class="el" href="group__emitter.html#ge323c34e378040106f24c7b5ab834b16">yaml.h</a>
-<li>yaml_emitter_set_break()
-: <a class="el" href="group__emitter.html#g04b5494f0b8244eec359579c31d5e20c">yaml.h</a>
-<li>yaml_emitter_set_canonical()
-: <a class="el" href="group__emitter.html#g62713a8130e11d95cbefa95a2eb3ac4b">yaml.h</a>
-<li>yaml_emitter_set_encoding()
-: <a class="el" href="group__emitter.html#gbc22888ec8bf942199acbf38f7a0b9bb">yaml.h</a>
-<li>yaml_emitter_set_indent()
-: <a class="el" href="group__emitter.html#g07eca3c344053a9028b4a84291cdf4d7">yaml.h</a>
-<li>yaml_emitter_set_output()
-: <a class="el" href="group__emitter.html#gc85a6a212ed7b469fb426a3451d15922">yaml.h</a>
-<li>yaml_emitter_set_output_file()
-: <a class="el" href="group__emitter.html#gf7610c61b303bde9c701024c10ece024">yaml.h</a>
-<li>yaml_emitter_set_output_string()
-: <a class="el" href="group__emitter.html#g62725c0f616f634588374d1a4c0ed35a">yaml.h</a>
-<li>yaml_emitter_set_unicode()
-: <a class="el" href="group__emitter.html#ga59e7dcf24cb9b614c32af6c3e949fc3">yaml.h</a>
-<li>yaml_emitter_set_width()
-: <a class="el" href="group__emitter.html#ga91ae0fa8af5ab67e64567e08f4458c2">yaml.h</a>
-<li>yaml_emitter_state_e
-: <a class="el" href="group__emitter.html#g387b79da11c3941e43a56947263aa721">yaml.h</a>
-<li>yaml_emitter_state_t
-: <a class="el" href="group__emitter.html#g0889461fa3efe8eee881aef48a4ba6b2">yaml.h</a>
-<li>yaml_emitter_t
-: <a class="el" href="group__emitter.html#g4ce3e054f0016c49d9e8c36d359e710b">yaml.h</a>
-<li>yaml_encoding_e
-: <a class="el" href="group__basic.html#gb88ee52b5d722e644c1cb4d1afcccdd9">yaml.h</a>
-<li>yaml_encoding_t
-: <a class="el" href="group__basic.html#g2170996d7e636397b5e6bc0c1b7df7c6">yaml.h</a>
-<li>yaml_error_type_e
-: <a class="el" href="group__basic.html#g2efbcde2e82238117982b789c5a8ea01">yaml.h</a>
-<li>yaml_error_type_t
-: <a class="el" href="group__basic.html#g1a449f0c1b023e2ef1a596093c018e73">yaml.h</a>
-<li>yaml_event_delete()
-: <a class="el" href="group__events.html#g5330d62ef52856aa53188137cb93a6a1">yaml.h</a>
-<li>yaml_event_t
-: <a class="el" href="group__events.html#g3b392d9716c4920cabefdd29e78dd542">yaml.h</a>
-<li>yaml_event_type_e
-: <a class="el" href="group__events.html#g454fccebae859c188fe3e7fa3299577c">yaml.h</a>
-<li>yaml_event_type_t
-: <a class="el" href="group__events.html#g8934661be36bd7c9d17a8af69eff89a1">yaml.h</a>
-<li>YAML_FLOAT_TAG
-: <a class="el" href="group__nodes.html#g6ab2ec71fc47cb24f1003b9acdb92843">yaml.h</a>
-<li>YAML_FLOW_ENTRY_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdf11ab5655350e4cf0559f78382daa93f">yaml.h</a>
-<li>YAML_FLOW_MAPPING_END_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdad99bf47234572d9d0eeea7669d1e769">yaml.h</a>
-<li>YAML_FLOW_MAPPING_START_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdff68a3f7c000c5294211eef8f4156100">yaml.h</a>
-<li>YAML_FLOW_MAPPING_STYLE
-: <a class="el" href="group__styles.html#gg1efef592e2e3df6f00432c04ef77d98f4c5425077b0310cbf84e1d73e20b42d3">yaml.h</a>
-<li>YAML_FLOW_SEQUENCE_END_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdb3496580bee30936f756e0102e98f331">yaml.h</a>
-<li>YAML_FLOW_SEQUENCE_START_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd862a2390be4abd59bb7bf55b18d9260c">yaml.h</a>
-<li>YAML_FLOW_SEQUENCE_STYLE
-: <a class="el" href="group__styles.html#gg5079a4ab96e398371c60423abd88ccc0e511554b654ebca464d1feec12501d80">yaml.h</a>
-<li>YAML_FOLDED_SCALAR_STYLE
-: <a class="el" href="group__styles.html#gg435ae8886b70c16830d853b6c566e2e0a67c3de37dc127986b08bdbe07cee607">yaml.h</a>
-<li>yaml_get_version()
-: <a class="el" href="group__version.html#gec764c91f3e181ae63d3d59b7980fe78">yaml.h</a>
-<li>yaml_get_version_string()
-: <a class="el" href="group__version.html#gf1ba5c1c34e809db5047d79a9fa85a73">yaml.h</a>
-<li>YAML_INT_TAG
-: <a class="el" href="group__nodes.html#g83263cdb4ffa6ad2f7d9a87281979ff5">yaml.h</a>
-<li>YAML_KEY_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd94d701c1f5bb8a392bb45b7cbf4bc2a5">yaml.h</a>
-<li>YAML_LITERAL_SCALAR_STYLE
-: <a class="el" href="group__styles.html#gg435ae8886b70c16830d853b6c566e2e0542d1ac1bf5c3434df3d2a757d0a8ca0">yaml.h</a>
-<li>YAML_LN_BREAK
-: <a class="el" href="group__basic.html#gg912ad8c893126133fab5e4231db3017e23bf395462dcd045e22303be6f3f7781">yaml.h</a>
-<li>YAML_MAP_TAG
-: <a class="el" href="group__nodes.html#g22ae99cf3ac014dd76873268fd068c12">yaml.h</a>
-<li>YAML_MAPPING_END_EVENT
-: <a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577cdc3dc55f17056a657005fecfb80fbd30">yaml.h</a>
-<li>yaml_mapping_end_event_initialize()
-: <a class="el" href="group__events.html#g3afaf8b3aca2ec902a4e268f12adb0c2">yaml.h</a>
-<li>YAML_MAPPING_NODE
-: <a class="el" href="group__nodes.html#gg0897d4b6bdd1b56c7a5fa0ff17b4f798c1a08580e3a70973583fc85e3e097ee6">yaml.h</a>
-<li>YAML_MAPPING_START_EVENT
-: <a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577c0f6982f6d1c325ee71af518c2c66dae8">yaml.h</a>
-<li>yaml_mapping_start_event_initialize()
-: <a class="el" href="group__events.html#g0603cf8d20f0b6dfc3be04b6360134aa">yaml.h</a>
-<li>yaml_mapping_style_e
-: <a class="el" href="group__styles.html#g1efef592e2e3df6f00432c04ef77d98f">yaml.h</a>
-<li>yaml_mapping_style_t
-: <a class="el" href="group__styles.html#gb47523846a5c5960e07367a28ea9750a">yaml.h</a>
-<li>yaml_mark_t
-: <a class="el" href="group__basic.html#g232eacba89691b841ba941338a302bfd">yaml.h</a>
-<li>YAML_MEMORY_ERROR
-: <a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea0157be0407d1f344206d9673c9571bde53">yaml.h</a>
-<li>YAML_NO_ERROR
-: <a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea0124cadfb5364769959ad8647649d1e86f">yaml.h</a>
-<li>YAML_NO_EVENT
-: <a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577cefda9f31823fe534f094f4241d5e5eac">yaml.h</a>
-<li>YAML_NO_NODE
-: <a class="el" href="group__nodes.html#gg0897d4b6bdd1b56c7a5fa0ff17b4f7980fa87c0e89c4d4136cb47165e6917739">yaml.h</a>
-<li>YAML_NO_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd66c1b8eec0cc6402c0fb4b2d1b017f92">yaml.h</a>
-<li>yaml_node_item_t
-: <a class="el" href="group__nodes.html#g7cc3581582e778b00c04e99cd3656860">yaml.h</a>
-<li>yaml_node_pair_t
-: <a class="el" href="group__nodes.html#g90f1c8b83c5c38dc4016afc1cc2050c4">yaml.h</a>
-<li>yaml_node_t
-: <a class="el" href="group__nodes.html#g9eaaa233b120b9d9db47de93c294c40f">yaml.h</a>
-<li>yaml_node_type_e
-: <a class="el" href="group__nodes.html#g0897d4b6bdd1b56c7a5fa0ff17b4f798">yaml.h</a>
-<li>yaml_node_type_t
-: <a class="el" href="group__nodes.html#gbe020d2fc42d3e896549e9f97da622d2">yaml.h</a>
-<li>YAML_NULL_TAG
-: <a class="el" href="group__nodes.html#gdfa882b6e42a3a993d12392d55260b00">yaml.h</a>
-<li>YAML_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5febcb5bbd67d112d9ecfa633155f0644">yaml.h</a>
-<li>YAML_PARSE_BLOCK_MAPPING_KEY_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c52df81c86e90b874b415ecb19e72efe45">yaml.h</a>
-<li>YAML_PARSE_BLOCK_MAPPING_VALUE_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5e94acf5685fa1538b225413f154465c2">yaml.h</a>
-<li>YAML_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5cbd390af0d3919fe0382d03c284ff3b5">yaml.h</a>
-<li>YAML_PARSE_BLOCK_NODE_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5e1893c0835bacf05cdc21ed181fb75f1">yaml.h</a>
-<li>YAML_PARSE_BLOCK_SEQUENCE_ENTRY_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c58a6cb1f12fe08eee7fc2fa854dbd5b1a">yaml.h</a>
-<li>YAML_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c55bb5f95fc5f1a258ee8e9db0ed25b2d9">yaml.h</a>
-<li>YAML_PARSE_DOCUMENT_CONTENT_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5e444c7652c8029b0ef80068eaaaa3d4d">yaml.h</a>
-<li>YAML_PARSE_DOCUMENT_END_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5eef06d7f13fa4501146a5b9876c98239">yaml.h</a>
-<li>YAML_PARSE_DOCUMENT_START_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5a06d10f700d245caecfc6074a6c52fde">yaml.h</a>
-<li>YAML_PARSE_END_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c551fd3d45693e2240251996def375a2a2">yaml.h</a>
-<li>YAML_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c55a8ec0af5c3314c1ad5e0569b6a5d6d2">yaml.h</a>
-<li>YAML_PARSE_FLOW_MAPPING_FIRST_KEY_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c591ac4bbb6629e2b768a3305fb707b7cd">yaml.h</a>
-<li>YAML_PARSE_FLOW_MAPPING_KEY_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5924f8eb891dc7527bf4db594a0b1bff8">yaml.h</a>
-<li>YAML_PARSE_FLOW_MAPPING_VALUE_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c53ba351f6cfba029248ada2c0720246d4">yaml.h</a>
-<li>YAML_PARSE_FLOW_NODE_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c55bb321f9d18c5b208a71c04bbcbd1d01">yaml.h</a>
-<li>YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5397fd87de9227c64e5308481930b5eeb">yaml.h</a>
-<li>YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5563e11601cf3a1d2a3efc1feb1b696a3">yaml.h</a>
-<li>YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c59e5ebb4bee4541e7a7025689c7fc66eb">yaml.h</a>
-<li>YAML_PARSE_FLOW_SEQUENCE_ENTRY_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c50e50f3841eb0d37ad159e64c4a9a1171">yaml.h</a>
-<li>YAML_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c53f54830989c12cc4a63494df792eeb08">yaml.h</a>
-<li>YAML_PARSE_IMPLICIT_DOCUMENT_START_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c58255725d67d5bd3574fc7df4db1c6c84">yaml.h</a>
-<li>YAML_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5f7095f2141cf9887489e832f0ec61fbd">yaml.h</a>
-<li>YAML_PARSE_STREAM_START_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5e7b52e16bf002db5cf2944596d8c880e">yaml.h</a>
-<li>yaml_parser_delete()
-: <a class="el" href="group__parser.html#ga27150107c4667c1024ec0651e2ac26b">yaml.h</a>
-<li>YAML_PARSER_ERROR
-: <a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea010e12c79d8586bc61470e3088b666078b">yaml.h</a>
-<li>yaml_parser_initialize()
-: <a class="el" href="group__parser.html#gcc37ceeb5847e38a3fe24eb0c9b53965">yaml.h</a>
-<li>yaml_parser_load()
-: <a class="el" href="group__parser.html#g9ef7d6e9494766b5880c389bc431d138">yaml.h</a>
-<li>yaml_parser_parse()
-: <a class="el" href="group__parser.html#g559312fb137533d8b7e07f224fe0ec8f">yaml.h</a>
-<li>yaml_parser_scan()
-: <a class="el" href="group__parser.html#g6c2144f131ebd600a075d4ba654540f7">yaml.h</a>
-<li>yaml_parser_set_encoding()
-: <a class="el" href="group__parser.html#g9565b64975570ed34612a19adf02ae6a">yaml.h</a>
-<li>yaml_parser_set_input()
-: <a class="el" href="group__parser.html#gbc67581bfa771a3e787d907d6914b8d9">yaml.h</a>
-<li>yaml_parser_set_input_file()
-: <a class="el" href="group__parser.html#gc3f00f8beb2365b1e4569692d64696b6">yaml.h</a>
-<li>yaml_parser_set_input_string()
-: <a class="el" href="group__parser.html#g08a94762bf5f4c61f72c1da0a407df0d">yaml.h</a>
-<li>yaml_parser_state_e
-: <a class="el" href="group__parser.html#gd39c19e7b0df6f542ca97806535b57c5">yaml.h</a>
-<li>yaml_parser_state_t
-: <a class="el" href="group__parser.html#g52b56d3e3cee0f9ba460978802a8c83b">yaml.h</a>
-<li>yaml_parser_t
-: <a class="el" href="group__parser.html#gfdc6319cb28a8b8034542b29be85b0c4">yaml.h</a>
-<li>YAML_PLAIN_SCALAR_STYLE
-: <a class="el" href="group__styles.html#gg435ae8886b70c16830d853b6c566e2e0fd62a761a36cf56e1f0414fb391db0e6">yaml.h</a>
-<li>yaml_read_handler_t
-: <a class="el" href="group__parser.html#g4982f7e4e001ddb47d2819f38f0cd9d6">yaml.h</a>
-<li>YAML_READER_ERROR
-: <a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea019216f41a453dc36b090cdc1ca9f89637">yaml.h</a>
-<li>YAML_SCALAR_EVENT
-: <a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577c8b16dc795bb228e33d647d1bdf683713">yaml.h</a>
-<li>yaml_scalar_event_initialize()
-: <a class="el" href="group__events.html#gfc60a1a437385e19e6fb3be075958c8c">yaml.h</a>
-<li>YAML_SCALAR_NODE
-: <a class="el" href="group__nodes.html#gg0897d4b6bdd1b56c7a5fa0ff17b4f798413ec8ce6b728c9ace703d194b370a45">yaml.h</a>
-<li>yaml_scalar_style_e
-: <a class="el" href="group__styles.html#g435ae8886b70c16830d853b6c566e2e0">yaml.h</a>
-<li>yaml_scalar_style_t
-: <a class="el" href="group__styles.html#g3fa6405631e1afe5bd5c488a6c5e8065">yaml.h</a>
-<li>YAML_SCALAR_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd107a78f31dd9857d06e9ead7936ea51e">yaml.h</a>
-<li>YAML_SCANNER_ERROR
-: <a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea016f8d865d9a25b385146660d8260d3d6f">yaml.h</a>
-<li>YAML_SEQ_TAG
-: <a class="el" href="group__nodes.html#ga8284b30f9c9e3f10f6a69c9b882f417">yaml.h</a>
-<li>YAML_SEQUENCE_END_EVENT
-: <a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577c2a8af98529275987d73eb307b6a92898">yaml.h</a>
-<li>yaml_sequence_end_event_initialize()
-: <a class="el" href="group__events.html#g99fdfa4b9d42b64d8171c9b22f334b1c">yaml.h</a>
-<li>YAML_SEQUENCE_NODE
-: <a class="el" href="group__nodes.html#gg0897d4b6bdd1b56c7a5fa0ff17b4f7986c03b52f7ee737982eac5e4001faac15">yaml.h</a>
-<li>YAML_SEQUENCE_START_EVENT
-: <a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577cd90ccd43e238221f542defa3c8eaf093">yaml.h</a>
-<li>yaml_sequence_start_event_initialize()
-: <a class="el" href="group__events.html#g53aea428c768d7b131923d08c904b4eb">yaml.h</a>
-<li>yaml_sequence_style_e
-: <a class="el" href="group__styles.html#g5079a4ab96e398371c60423abd88ccc0">yaml.h</a>
-<li>yaml_sequence_style_t
-: <a class="el" href="group__styles.html#g58a1123d271e56c72de6abf852ac4dc2">yaml.h</a>
-<li>yaml_simple_key_t
-: <a class="el" href="group__parser.html#ge5570fbb7ab7c8332cd666f3a9c26591">yaml.h</a>
-<li>YAML_SINGLE_QUOTED_SCALAR_STYLE
-: <a class="el" href="group__styles.html#gg435ae8886b70c16830d853b6c566e2e068a2af452008e3af3f6de14318dfb2c6">yaml.h</a>
-<li>YAML_STR_TAG
-: <a class="el" href="group__nodes.html#gc5dbc6d1f556663edf8db88d6113e931">yaml.h</a>
-<li>YAML_STREAM_END_EVENT
-: <a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577c4a5e76ed540645102a13352af2503d3b">yaml.h</a>
-<li>yaml_stream_end_event_initialize()
-: <a class="el" href="group__events.html#g84cf0c3ff01251c852c71624e64df9fe">yaml.h</a>
-<li>YAML_STREAM_END_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd020a0a266ed7fc4902dd02750512dc19">yaml.h</a>
-<li>YAML_STREAM_START_EVENT
-: <a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577ca742e9970f14d1fe7ce4d178d79e8465">yaml.h</a>
-<li>yaml_stream_start_event_initialize()
-: <a class="el" href="group__events.html#g0650d255b23d9aae13c839f4ab3ec2ab">yaml.h</a>
-<li>YAML_STREAM_START_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdf5f42f2d5025e5629034848d2e1db6c9">yaml.h</a>
-<li>yaml_tag_directive_t
-: <a class="el" href="group__basic.html#g0b4bc4871b0c9104e32d40d5f3803674">yaml.h</a>
-<li>YAML_TAG_DIRECTIVE_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbded517a61b868769e2bfced40678be414">yaml.h</a>
-<li>YAML_TAG_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd8f02c514b72f29bd3c26b7c832d8152d">yaml.h</a>
-<li>YAML_TIMESTAMP_TAG
-: <a class="el" href="group__nodes.html#g3e27cca7191234f2e8c95eaf3bc99a73">yaml.h</a>
-<li>yaml_token_delete()
-: <a class="el" href="group__tokens.html#g3140131870e38e27f92a8fd286e5c004">yaml.h</a>
-<li>yaml_token_t
-: <a class="el" href="group__tokens.html#g1ed3dc460e62aee8270c5d63d5734bbb">yaml.h</a>
-<li>yaml_token_type_e
-: <a class="el" href="group__tokens.html#gae955b10aa6b5f922de64873bf4ccdbd">yaml.h</a>
-<li>yaml_token_type_t
-: <a class="el" href="group__tokens.html#gba51dda022dced02f8df2224ab7993f7">yaml.h</a>
-<li>YAML_UTF16BE_ENCODING
-: <a class="el" href="group__basic.html#ggb88ee52b5d722e644c1cb4d1afcccdd99f4fcb99a71d3416239f343f1334780b">yaml.h</a>
-<li>YAML_UTF16LE_ENCODING
-: <a class="el" href="group__basic.html#ggb88ee52b5d722e644c1cb4d1afcccdd9c68c68725ec1f6492e59fd388fd123c9">yaml.h</a>
-<li>YAML_UTF8_ENCODING
-: <a class="el" href="group__basic.html#ggb88ee52b5d722e644c1cb4d1afcccdd95bacbc5e68fc0c25baedf87e3be25a28">yaml.h</a>
-<li>YAML_VALUE_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdac46e8a6a6e0614de322c7b53d785b4e">yaml.h</a>
-<li>yaml_version_directive_t
-: <a class="el" href="group__basic.html#g2fc55608333fbe6df17cf891be709b72">yaml.h</a>
-<li>YAML_VERSION_DIRECTIVE_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbda15a96ec81c00c7db8f83628a89542e4">yaml.h</a>
-<li>yaml_write_handler_t
-: <a class="el" href="group__emitter.html#g1669659aacbe631ad406c78fce1f5379">yaml.h</a>
-<li>YAML_WRITER_ERROR
-: <a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea01e80fef003be3d7e72ed7acae7984004c">yaml.h</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/globals_defs.html b/yaml-0.1.3/doc/html/globals_defs.html
deleted file mode 100644
index d441af3..0000000
--- a/yaml-0.1.3/doc/html/globals_defs.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="globals.html"><span>All</span></a></li>
-      <li><a href="globals_func.html"><span>Functions</span></a></li>
-      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
-      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
-      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
-      <li class="current"><a href="globals_defs.html"><span>Defines</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<ul>
-<li>YAML_BOOL_TAG
-: <a class="el" href="group__nodes.html#g312629a1f51e91b136352db988d4d771">yaml.h</a>
-<li>YAML_DECLARE
-: <a class="el" href="group__export.html#g0791fd3e1d85ed53711b1feaae131f93">yaml.h</a>
-<li>YAML_DEFAULT_MAPPING_TAG
-: <a class="el" href="group__nodes.html#gf7b1f8f0ce5665794510cd3841802a5f">yaml.h</a>
-<li>YAML_DEFAULT_SCALAR_TAG
-: <a class="el" href="group__nodes.html#gf6b0c4e819b8f6915515a4f70065aaaa">yaml.h</a>
-<li>YAML_DEFAULT_SEQUENCE_TAG
-: <a class="el" href="group__nodes.html#gf195b67002518702e27746d6b4da6124">yaml.h</a>
-<li>YAML_FLOAT_TAG
-: <a class="el" href="group__nodes.html#g6ab2ec71fc47cb24f1003b9acdb92843">yaml.h</a>
-<li>YAML_INT_TAG
-: <a class="el" href="group__nodes.html#g83263cdb4ffa6ad2f7d9a87281979ff5">yaml.h</a>
-<li>YAML_MAP_TAG
-: <a class="el" href="group__nodes.html#g22ae99cf3ac014dd76873268fd068c12">yaml.h</a>
-<li>YAML_NULL_TAG
-: <a class="el" href="group__nodes.html#gdfa882b6e42a3a993d12392d55260b00">yaml.h</a>
-<li>YAML_SEQ_TAG
-: <a class="el" href="group__nodes.html#ga8284b30f9c9e3f10f6a69c9b882f417">yaml.h</a>
-<li>YAML_STR_TAG
-: <a class="el" href="group__nodes.html#gc5dbc6d1f556663edf8db88d6113e931">yaml.h</a>
-<li>YAML_TIMESTAMP_TAG
-: <a class="el" href="group__nodes.html#g3e27cca7191234f2e8c95eaf3bc99a73">yaml.h</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/globals_enum.html b/yaml-0.1.3/doc/html/globals_enum.html
deleted file mode 100644
index 03223bd..0000000
--- a/yaml-0.1.3/doc/html/globals_enum.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="globals.html"><span>All</span></a></li>
-      <li><a href="globals_func.html"><span>Functions</span></a></li>
-      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
-      <li class="current"><a href="globals_enum.html"><span>Enumerations</span></a></li>
-      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="globals_defs.html"><span>Defines</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<ul>
-<li>yaml_break_e
-: <a class="el" href="group__basic.html#g912ad8c893126133fab5e4231db3017e">yaml.h</a>
-<li>yaml_emitter_state_e
-: <a class="el" href="group__emitter.html#g387b79da11c3941e43a56947263aa721">yaml.h</a>
-<li>yaml_encoding_e
-: <a class="el" href="group__basic.html#gb88ee52b5d722e644c1cb4d1afcccdd9">yaml.h</a>
-<li>yaml_error_type_e
-: <a class="el" href="group__basic.html#g2efbcde2e82238117982b789c5a8ea01">yaml.h</a>
-<li>yaml_event_type_e
-: <a class="el" href="group__events.html#g454fccebae859c188fe3e7fa3299577c">yaml.h</a>
-<li>yaml_mapping_style_e
-: <a class="el" href="group__styles.html#g1efef592e2e3df6f00432c04ef77d98f">yaml.h</a>
-<li>yaml_node_type_e
-: <a class="el" href="group__nodes.html#g0897d4b6bdd1b56c7a5fa0ff17b4f798">yaml.h</a>
-<li>yaml_parser_state_e
-: <a class="el" href="group__parser.html#gd39c19e7b0df6f542ca97806535b57c5">yaml.h</a>
-<li>yaml_scalar_style_e
-: <a class="el" href="group__styles.html#g435ae8886b70c16830d853b6c566e2e0">yaml.h</a>
-<li>yaml_sequence_style_e
-: <a class="el" href="group__styles.html#g5079a4ab96e398371c60423abd88ccc0">yaml.h</a>
-<li>yaml_token_type_e
-: <a class="el" href="group__tokens.html#gae955b10aa6b5f922de64873bf4ccdbd">yaml.h</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/globals_eval.html b/yaml-0.1.3/doc/html/globals_eval.html
deleted file mode 100644
index 5d63e6f..0000000
--- a/yaml-0.1.3/doc/html/globals_eval.html
+++ /dev/null
@@ -1,263 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="globals.html"><span>All</span></a></li>
-      <li><a href="globals_func.html"><span>Functions</span></a></li>
-      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
-      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
-      <li class="current"><a href="globals_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="globals_defs.html"><span>Defines</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="#index_y"><span>y</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_y">- y -</a></h3><ul>
-<li>YAML_ALIAS_EVENT
-: <a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577c8c3ce47705cfbd49a87a32bdbe544eb7">yaml.h</a>
-<li>YAML_ALIAS_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd080c398f6fc31f9ab35c7cf94cf948c2">yaml.h</a>
-<li>YAML_ANCHOR_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd7f0855938c5ccc4820b68ddd7985a5d0">yaml.h</a>
-<li>YAML_ANY_BREAK
-: <a class="el" href="group__basic.html#gg912ad8c893126133fab5e4231db3017e052bd56adef565c33a86fcc05b49513f">yaml.h</a>
-<li>YAML_ANY_ENCODING
-: <a class="el" href="group__basic.html#ggb88ee52b5d722e644c1cb4d1afcccdd9b61d2a81b8e698e642ce6ad69612fa7f">yaml.h</a>
-<li>YAML_ANY_MAPPING_STYLE
-: <a class="el" href="group__styles.html#gg1efef592e2e3df6f00432c04ef77d98fc580a83312204ea142c3d08a4954a74a">yaml.h</a>
-<li>YAML_ANY_SCALAR_STYLE
-: <a class="el" href="group__styles.html#gg435ae8886b70c16830d853b6c566e2e0ead38b3e6846302ee032927267c34ae0">yaml.h</a>
-<li>YAML_ANY_SEQUENCE_STYLE
-: <a class="el" href="group__styles.html#gg5079a4ab96e398371c60423abd88ccc05a10d6f70339876b76e5a002dd16212f">yaml.h</a>
-<li>YAML_BLOCK_END_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd439948425097b4fc853f39f0de14a5ff">yaml.h</a>
-<li>YAML_BLOCK_ENTRY_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbda9bdf1d6da41fcd4d356c7bcfa0227b4">yaml.h</a>
-<li>YAML_BLOCK_MAPPING_START_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd9a95db99bd99f7f9b4e1e879106297dc">yaml.h</a>
-<li>YAML_BLOCK_MAPPING_STYLE
-: <a class="el" href="group__styles.html#gg1efef592e2e3df6f00432c04ef77d98fd5e70fe97009c8247a45f4620f071874">yaml.h</a>
-<li>YAML_BLOCK_SEQUENCE_START_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd4bfddc427da159168ee47267cbeea94f">yaml.h</a>
-<li>YAML_BLOCK_SEQUENCE_STYLE
-: <a class="el" href="group__styles.html#gg5079a4ab96e398371c60423abd88ccc065f99099ef4ecdcf99bbdd798b5dcbb5">yaml.h</a>
-<li>YAML_COMPOSER_ERROR
-: <a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea0143d6eb640e50a1b1ec843cc54ab15f2b">yaml.h</a>
-<li>YAML_CR_BREAK
-: <a class="el" href="group__basic.html#gg912ad8c893126133fab5e4231db3017e116a98ba4ed0bacfdf098a7d5beeb9d4">yaml.h</a>
-<li>YAML_CRLN_BREAK
-: <a class="el" href="group__basic.html#gg912ad8c893126133fab5e4231db3017e15f8daa406870ebfe82b85781c2468f3">yaml.h</a>
-<li>YAML_DOCUMENT_END_EVENT
-: <a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577c355ec471f963827c96512e529676276f">yaml.h</a>
-<li>YAML_DOCUMENT_END_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd8d0908a82229f44d5ea92a2c380f4579">yaml.h</a>
-<li>YAML_DOCUMENT_START_EVENT
-: <a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577cf4ca2b0f538029cf054cdebd09d3d6d3">yaml.h</a>
-<li>YAML_DOCUMENT_START_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdbcafcdb506886387f93cca734ddfd670">yaml.h</a>
-<li>YAML_DOUBLE_QUOTED_SCALAR_STYLE
-: <a class="el" href="group__styles.html#gg435ae8886b70c16830d853b6c566e2e0f6fdfd14690361f4937d67d1f0f011d3">yaml.h</a>
-<li>YAML_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721ee36d46c1facecfd73fab73e3343226e">yaml.h</a>
-<li>YAML_EMIT_BLOCK_MAPPING_KEY_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa72158495cae63b8c3d7c389b1281baeec05">yaml.h</a>
-<li>YAML_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa7214aa3c6bf2f2d976c47289c741d7a8704">yaml.h</a>
-<li>YAML_EMIT_BLOCK_MAPPING_VALUE_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa7217e0f7fac64fc64bb2bc9fe2ec93ca564">yaml.h</a>
-<li>YAML_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa72168af7c090c6d0187788e390341f0cc4d">yaml.h</a>
-<li>YAML_EMIT_BLOCK_SEQUENCE_ITEM_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa7218197c180c3cefee7b67304e17b52c5ff">yaml.h</a>
-<li>YAML_EMIT_DOCUMENT_CONTENT_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa7215ce3ed6155496a6fbd7384e310c58bec">yaml.h</a>
-<li>YAML_EMIT_DOCUMENT_END_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721100cad4538be033202da4bb85f8443d3">yaml.h</a>
-<li>YAML_EMIT_DOCUMENT_START_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721678d8c3146f0b2c84e0fc537a9b1109f">yaml.h</a>
-<li>YAML_EMIT_END_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa7212a0232912eaf4eeb06594ee6157dfbc0">yaml.h</a>
-<li>YAML_EMIT_FIRST_DOCUMENT_START_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721b1ae25188f02581a137f66c4b6e084ae">yaml.h</a>
-<li>YAML_EMIT_FLOW_MAPPING_FIRST_KEY_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721b811f3d642dacc7c413af2c32356f894">yaml.h</a>
-<li>YAML_EMIT_FLOW_MAPPING_KEY_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721babf835ee5cd4c6de2231e2a49e40626">yaml.h</a>
-<li>YAML_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721a6f687a6b57e727f0e7b7a2687ad7383">yaml.h</a>
-<li>YAML_EMIT_FLOW_MAPPING_VALUE_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721cb6dbcb535248b8fde779aeedc957b2e">yaml.h</a>
-<li>YAML_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa7215a36fc535f3a5720fbb86712959e5654">yaml.h</a>
-<li>YAML_EMIT_FLOW_SEQUENCE_ITEM_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721ded45f1dee80027d7b9c6ce061c08767">yaml.h</a>
-<li>YAML_EMIT_STREAM_START_STATE
-: <a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721a013a33dab710fe9a30ba014af27b81d">yaml.h</a>
-<li>YAML_EMITTER_ERROR
-: <a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea018ec99a26382dd2853a5550027f6e9db1">yaml.h</a>
-<li>YAML_FLOW_ENTRY_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdf11ab5655350e4cf0559f78382daa93f">yaml.h</a>
-<li>YAML_FLOW_MAPPING_END_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdad99bf47234572d9d0eeea7669d1e769">yaml.h</a>
-<li>YAML_FLOW_MAPPING_START_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdff68a3f7c000c5294211eef8f4156100">yaml.h</a>
-<li>YAML_FLOW_MAPPING_STYLE
-: <a class="el" href="group__styles.html#gg1efef592e2e3df6f00432c04ef77d98f4c5425077b0310cbf84e1d73e20b42d3">yaml.h</a>
-<li>YAML_FLOW_SEQUENCE_END_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdb3496580bee30936f756e0102e98f331">yaml.h</a>
-<li>YAML_FLOW_SEQUENCE_START_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd862a2390be4abd59bb7bf55b18d9260c">yaml.h</a>
-<li>YAML_FLOW_SEQUENCE_STYLE
-: <a class="el" href="group__styles.html#gg5079a4ab96e398371c60423abd88ccc0e511554b654ebca464d1feec12501d80">yaml.h</a>
-<li>YAML_FOLDED_SCALAR_STYLE
-: <a class="el" href="group__styles.html#gg435ae8886b70c16830d853b6c566e2e0a67c3de37dc127986b08bdbe07cee607">yaml.h</a>
-<li>YAML_KEY_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd94d701c1f5bb8a392bb45b7cbf4bc2a5">yaml.h</a>
-<li>YAML_LITERAL_SCALAR_STYLE
-: <a class="el" href="group__styles.html#gg435ae8886b70c16830d853b6c566e2e0542d1ac1bf5c3434df3d2a757d0a8ca0">yaml.h</a>
-<li>YAML_LN_BREAK
-: <a class="el" href="group__basic.html#gg912ad8c893126133fab5e4231db3017e23bf395462dcd045e22303be6f3f7781">yaml.h</a>
-<li>YAML_MAPPING_END_EVENT
-: <a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577cdc3dc55f17056a657005fecfb80fbd30">yaml.h</a>
-<li>YAML_MAPPING_NODE
-: <a class="el" href="group__nodes.html#gg0897d4b6bdd1b56c7a5fa0ff17b4f798c1a08580e3a70973583fc85e3e097ee6">yaml.h</a>
-<li>YAML_MAPPING_START_EVENT
-: <a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577c0f6982f6d1c325ee71af518c2c66dae8">yaml.h</a>
-<li>YAML_MEMORY_ERROR
-: <a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea0157be0407d1f344206d9673c9571bde53">yaml.h</a>
-<li>YAML_NO_ERROR
-: <a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea0124cadfb5364769959ad8647649d1e86f">yaml.h</a>
-<li>YAML_NO_EVENT
-: <a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577cefda9f31823fe534f094f4241d5e5eac">yaml.h</a>
-<li>YAML_NO_NODE
-: <a class="el" href="group__nodes.html#gg0897d4b6bdd1b56c7a5fa0ff17b4f7980fa87c0e89c4d4136cb47165e6917739">yaml.h</a>
-<li>YAML_NO_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd66c1b8eec0cc6402c0fb4b2d1b017f92">yaml.h</a>
-<li>YAML_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5febcb5bbd67d112d9ecfa633155f0644">yaml.h</a>
-<li>YAML_PARSE_BLOCK_MAPPING_KEY_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c52df81c86e90b874b415ecb19e72efe45">yaml.h</a>
-<li>YAML_PARSE_BLOCK_MAPPING_VALUE_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5e94acf5685fa1538b225413f154465c2">yaml.h</a>
-<li>YAML_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5cbd390af0d3919fe0382d03c284ff3b5">yaml.h</a>
-<li>YAML_PARSE_BLOCK_NODE_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5e1893c0835bacf05cdc21ed181fb75f1">yaml.h</a>
-<li>YAML_PARSE_BLOCK_SEQUENCE_ENTRY_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c58a6cb1f12fe08eee7fc2fa854dbd5b1a">yaml.h</a>
-<li>YAML_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c55bb5f95fc5f1a258ee8e9db0ed25b2d9">yaml.h</a>
-<li>YAML_PARSE_DOCUMENT_CONTENT_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5e444c7652c8029b0ef80068eaaaa3d4d">yaml.h</a>
-<li>YAML_PARSE_DOCUMENT_END_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5eef06d7f13fa4501146a5b9876c98239">yaml.h</a>
-<li>YAML_PARSE_DOCUMENT_START_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5a06d10f700d245caecfc6074a6c52fde">yaml.h</a>
-<li>YAML_PARSE_END_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c551fd3d45693e2240251996def375a2a2">yaml.h</a>
-<li>YAML_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c55a8ec0af5c3314c1ad5e0569b6a5d6d2">yaml.h</a>
-<li>YAML_PARSE_FLOW_MAPPING_FIRST_KEY_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c591ac4bbb6629e2b768a3305fb707b7cd">yaml.h</a>
-<li>YAML_PARSE_FLOW_MAPPING_KEY_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5924f8eb891dc7527bf4db594a0b1bff8">yaml.h</a>
-<li>YAML_PARSE_FLOW_MAPPING_VALUE_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c53ba351f6cfba029248ada2c0720246d4">yaml.h</a>
-<li>YAML_PARSE_FLOW_NODE_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c55bb321f9d18c5b208a71c04bbcbd1d01">yaml.h</a>
-<li>YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5397fd87de9227c64e5308481930b5eeb">yaml.h</a>
-<li>YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5563e11601cf3a1d2a3efc1feb1b696a3">yaml.h</a>
-<li>YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c59e5ebb4bee4541e7a7025689c7fc66eb">yaml.h</a>
-<li>YAML_PARSE_FLOW_SEQUENCE_ENTRY_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c50e50f3841eb0d37ad159e64c4a9a1171">yaml.h</a>
-<li>YAML_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c53f54830989c12cc4a63494df792eeb08">yaml.h</a>
-<li>YAML_PARSE_IMPLICIT_DOCUMENT_START_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c58255725d67d5bd3574fc7df4db1c6c84">yaml.h</a>
-<li>YAML_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5f7095f2141cf9887489e832f0ec61fbd">yaml.h</a>
-<li>YAML_PARSE_STREAM_START_STATE
-: <a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5e7b52e16bf002db5cf2944596d8c880e">yaml.h</a>
-<li>YAML_PARSER_ERROR
-: <a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea010e12c79d8586bc61470e3088b666078b">yaml.h</a>
-<li>YAML_PLAIN_SCALAR_STYLE
-: <a class="el" href="group__styles.html#gg435ae8886b70c16830d853b6c566e2e0fd62a761a36cf56e1f0414fb391db0e6">yaml.h</a>
-<li>YAML_READER_ERROR
-: <a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea019216f41a453dc36b090cdc1ca9f89637">yaml.h</a>
-<li>YAML_SCALAR_EVENT
-: <a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577c8b16dc795bb228e33d647d1bdf683713">yaml.h</a>
-<li>YAML_SCALAR_NODE
-: <a class="el" href="group__nodes.html#gg0897d4b6bdd1b56c7a5fa0ff17b4f798413ec8ce6b728c9ace703d194b370a45">yaml.h</a>
-<li>YAML_SCALAR_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd107a78f31dd9857d06e9ead7936ea51e">yaml.h</a>
-<li>YAML_SCANNER_ERROR
-: <a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea016f8d865d9a25b385146660d8260d3d6f">yaml.h</a>
-<li>YAML_SEQUENCE_END_EVENT
-: <a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577c2a8af98529275987d73eb307b6a92898">yaml.h</a>
-<li>YAML_SEQUENCE_NODE
-: <a class="el" href="group__nodes.html#gg0897d4b6bdd1b56c7a5fa0ff17b4f7986c03b52f7ee737982eac5e4001faac15">yaml.h</a>
-<li>YAML_SEQUENCE_START_EVENT
-: <a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577cd90ccd43e238221f542defa3c8eaf093">yaml.h</a>
-<li>YAML_SINGLE_QUOTED_SCALAR_STYLE
-: <a class="el" href="group__styles.html#gg435ae8886b70c16830d853b6c566e2e068a2af452008e3af3f6de14318dfb2c6">yaml.h</a>
-<li>YAML_STREAM_END_EVENT
-: <a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577c4a5e76ed540645102a13352af2503d3b">yaml.h</a>
-<li>YAML_STREAM_END_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd020a0a266ed7fc4902dd02750512dc19">yaml.h</a>
-<li>YAML_STREAM_START_EVENT
-: <a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577ca742e9970f14d1fe7ce4d178d79e8465">yaml.h</a>
-<li>YAML_STREAM_START_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdf5f42f2d5025e5629034848d2e1db6c9">yaml.h</a>
-<li>YAML_TAG_DIRECTIVE_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbded517a61b868769e2bfced40678be414">yaml.h</a>
-<li>YAML_TAG_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd8f02c514b72f29bd3c26b7c832d8152d">yaml.h</a>
-<li>YAML_UTF16BE_ENCODING
-: <a class="el" href="group__basic.html#ggb88ee52b5d722e644c1cb4d1afcccdd99f4fcb99a71d3416239f343f1334780b">yaml.h</a>
-<li>YAML_UTF16LE_ENCODING
-: <a class="el" href="group__basic.html#ggb88ee52b5d722e644c1cb4d1afcccdd9c68c68725ec1f6492e59fd388fd123c9">yaml.h</a>
-<li>YAML_UTF8_ENCODING
-: <a class="el" href="group__basic.html#ggb88ee52b5d722e644c1cb4d1afcccdd95bacbc5e68fc0c25baedf87e3be25a28">yaml.h</a>
-<li>YAML_VALUE_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdac46e8a6a6e0614de322c7b53d785b4e">yaml.h</a>
-<li>YAML_VERSION_DIRECTIVE_TOKEN
-: <a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbda15a96ec81c00c7db8f83628a89542e4">yaml.h</a>
-<li>YAML_WRITER_ERROR
-: <a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea01e80fef003be3d7e72ed7acae7984004c">yaml.h</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/globals_func.html b/yaml-0.1.3/doc/html/globals_func.html
deleted file mode 100644
index 2a7d9dc..0000000
--- a/yaml-0.1.3/doc/html/globals_func.html
+++ /dev/null
@@ -1,145 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="globals.html"><span>All</span></a></li>
-      <li class="current"><a href="globals_func.html"><span>Functions</span></a></li>
-      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
-      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
-      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="globals_defs.html"><span>Defines</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="#index_y"><span>y</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<h3><a class="anchor" name="index_y">- y -</a></h3><ul>
-<li>yaml_alias_event_initialize()
-: <a class="el" href="group__events.html#gde4c15b75eb9a8035e04d4f0dd23f005">yaml.h</a>
-<li>yaml_document_add_mapping()
-: <a class="el" href="group__nodes.html#g45a9f8288704f99cd81dc5cb31329d34">yaml.h</a>
-<li>yaml_document_add_scalar()
-: <a class="el" href="group__nodes.html#g45dab8b983b58a005557d4b01f5057b0">yaml.h</a>
-<li>yaml_document_add_sequence()
-: <a class="el" href="group__nodes.html#g83b2f7fdd9a439397a42016bddad7786">yaml.h</a>
-<li>yaml_document_append_mapping_pair()
-: <a class="el" href="group__nodes.html#g2db27002d8a9ae06b1729d0ee06553d2">yaml.h</a>
-<li>yaml_document_append_sequence_item()
-: <a class="el" href="group__nodes.html#g16435917cd6c0261cd390fa8cf173b1b">yaml.h</a>
-<li>yaml_document_delete()
-: <a class="el" href="group__nodes.html#g2754b1544fb4e110e83fafbc708b0672">yaml.h</a>
-<li>yaml_document_end_event_initialize()
-: <a class="el" href="group__events.html#g8bae16548ee88f8a5ca15204f8c30344">yaml.h</a>
-<li>yaml_document_get_node()
-: <a class="el" href="group__nodes.html#gfa1feabc9747dbded4dca24e27d3c21a">yaml.h</a>
-<li>yaml_document_get_root_node()
-: <a class="el" href="group__nodes.html#g40eeaa68fb2f3be34c4fe34e7597d324">yaml.h</a>
-<li>yaml_document_initialize()
-: <a class="el" href="group__nodes.html#g62a485c96f3b7962436a0da5e6f3cc89">yaml.h</a>
-<li>yaml_document_start_event_initialize()
-: <a class="el" href="group__events.html#g527e89302e1c969fbea5aa45664bf51c">yaml.h</a>
-<li>yaml_emitter_close()
-: <a class="el" href="group__emitter.html#ga91442864679280985df14b2d96b8c42">yaml.h</a>
-<li>yaml_emitter_delete()
-: <a class="el" href="group__emitter.html#gd705212f3a5150e3f00075fd90bc8c3d">yaml.h</a>
-<li>yaml_emitter_dump()
-: <a class="el" href="group__emitter.html#g5f0306abe9bff373b5bc339913b3769c">yaml.h</a>
-<li>yaml_emitter_emit()
-: <a class="el" href="group__emitter.html#g4d6c0f8e712797e2660e69479fdae433">yaml.h</a>
-<li>yaml_emitter_flush()
-: <a class="el" href="group__emitter.html#gcaf24456e2bf85bc5654cbd7d828055f">yaml.h</a>
-<li>yaml_emitter_initialize()
-: <a class="el" href="group__emitter.html#g83649205374285802fc27aa293ecd111">yaml.h</a>
-<li>yaml_emitter_open()
-: <a class="el" href="group__emitter.html#ge323c34e378040106f24c7b5ab834b16">yaml.h</a>
-<li>yaml_emitter_set_break()
-: <a class="el" href="group__emitter.html#g04b5494f0b8244eec359579c31d5e20c">yaml.h</a>
-<li>yaml_emitter_set_canonical()
-: <a class="el" href="group__emitter.html#g62713a8130e11d95cbefa95a2eb3ac4b">yaml.h</a>
-<li>yaml_emitter_set_encoding()
-: <a class="el" href="group__emitter.html#gbc22888ec8bf942199acbf38f7a0b9bb">yaml.h</a>
-<li>yaml_emitter_set_indent()
-: <a class="el" href="group__emitter.html#g07eca3c344053a9028b4a84291cdf4d7">yaml.h</a>
-<li>yaml_emitter_set_output()
-: <a class="el" href="group__emitter.html#gc85a6a212ed7b469fb426a3451d15922">yaml.h</a>
-<li>yaml_emitter_set_output_file()
-: <a class="el" href="group__emitter.html#gf7610c61b303bde9c701024c10ece024">yaml.h</a>
-<li>yaml_emitter_set_output_string()
-: <a class="el" href="group__emitter.html#g62725c0f616f634588374d1a4c0ed35a">yaml.h</a>
-<li>yaml_emitter_set_unicode()
-: <a class="el" href="group__emitter.html#ga59e7dcf24cb9b614c32af6c3e949fc3">yaml.h</a>
-<li>yaml_emitter_set_width()
-: <a class="el" href="group__emitter.html#ga91ae0fa8af5ab67e64567e08f4458c2">yaml.h</a>
-<li>yaml_event_delete()
-: <a class="el" href="group__events.html#g5330d62ef52856aa53188137cb93a6a1">yaml.h</a>
-<li>yaml_get_version()
-: <a class="el" href="group__version.html#gec764c91f3e181ae63d3d59b7980fe78">yaml.h</a>
-<li>yaml_get_version_string()
-: <a class="el" href="group__version.html#gf1ba5c1c34e809db5047d79a9fa85a73">yaml.h</a>
-<li>yaml_mapping_end_event_initialize()
-: <a class="el" href="group__events.html#g3afaf8b3aca2ec902a4e268f12adb0c2">yaml.h</a>
-<li>yaml_mapping_start_event_initialize()
-: <a class="el" href="group__events.html#g0603cf8d20f0b6dfc3be04b6360134aa">yaml.h</a>
-<li>yaml_parser_delete()
-: <a class="el" href="group__parser.html#ga27150107c4667c1024ec0651e2ac26b">yaml.h</a>
-<li>yaml_parser_initialize()
-: <a class="el" href="group__parser.html#gcc37ceeb5847e38a3fe24eb0c9b53965">yaml.h</a>
-<li>yaml_parser_load()
-: <a class="el" href="group__parser.html#g9ef7d6e9494766b5880c389bc431d138">yaml.h</a>
-<li>yaml_parser_parse()
-: <a class="el" href="group__parser.html#g559312fb137533d8b7e07f224fe0ec8f">yaml.h</a>
-<li>yaml_parser_scan()
-: <a class="el" href="group__parser.html#g6c2144f131ebd600a075d4ba654540f7">yaml.h</a>
-<li>yaml_parser_set_encoding()
-: <a class="el" href="group__parser.html#g9565b64975570ed34612a19adf02ae6a">yaml.h</a>
-<li>yaml_parser_set_input()
-: <a class="el" href="group__parser.html#gbc67581bfa771a3e787d907d6914b8d9">yaml.h</a>
-<li>yaml_parser_set_input_file()
-: <a class="el" href="group__parser.html#gc3f00f8beb2365b1e4569692d64696b6">yaml.h</a>
-<li>yaml_parser_set_input_string()
-: <a class="el" href="group__parser.html#g08a94762bf5f4c61f72c1da0a407df0d">yaml.h</a>
-<li>yaml_scalar_event_initialize()
-: <a class="el" href="group__events.html#gfc60a1a437385e19e6fb3be075958c8c">yaml.h</a>
-<li>yaml_sequence_end_event_initialize()
-: <a class="el" href="group__events.html#g99fdfa4b9d42b64d8171c9b22f334b1c">yaml.h</a>
-<li>yaml_sequence_start_event_initialize()
-: <a class="el" href="group__events.html#g53aea428c768d7b131923d08c904b4eb">yaml.h</a>
-<li>yaml_stream_end_event_initialize()
-: <a class="el" href="group__events.html#g84cf0c3ff01251c852c71624e64df9fe">yaml.h</a>
-<li>yaml_stream_start_event_initialize()
-: <a class="el" href="group__events.html#g0650d255b23d9aae13c839f4ab3ec2ab">yaml.h</a>
-<li>yaml_token_delete()
-: <a class="el" href="group__tokens.html#g3140131870e38e27f92a8fd286e5c004">yaml.h</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/globals_type.html b/yaml-0.1.3/doc/html/globals_type.html
deleted file mode 100644
index dec4e7f..0000000
--- a/yaml-0.1.3/doc/html/globals_type.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="globals.html"><span>All</span></a></li>
-      <li><a href="globals_func.html"><span>Functions</span></a></li>
-      <li class="current"><a href="globals_type.html"><span>Typedefs</span></a></li>
-      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
-      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="globals_defs.html"><span>Defines</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&nbsp;
-<p>
-<ul>
-<li>yaml_alias_data_t
-: <a class="el" href="group__parser.html#g1434228b82f5f90d3c8ccda816e9ca9d">yaml.h</a>
-<li>yaml_break_t
-: <a class="el" href="group__basic.html#g64d1365e1acd4deeab50d6b48e39cb6d">yaml.h</a>
-<li>yaml_char_t
-: <a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml.h</a>
-<li>yaml_document_t
-: <a class="el" href="group__nodes.html#gd94e064e95baeb22e4f7acc7804e8479">yaml.h</a>
-<li>yaml_emitter_state_t
-: <a class="el" href="group__emitter.html#g0889461fa3efe8eee881aef48a4ba6b2">yaml.h</a>
-<li>yaml_emitter_t
-: <a class="el" href="group__emitter.html#g4ce3e054f0016c49d9e8c36d359e710b">yaml.h</a>
-<li>yaml_encoding_t
-: <a class="el" href="group__basic.html#g2170996d7e636397b5e6bc0c1b7df7c6">yaml.h</a>
-<li>yaml_error_type_t
-: <a class="el" href="group__basic.html#g1a449f0c1b023e2ef1a596093c018e73">yaml.h</a>
-<li>yaml_event_t
-: <a class="el" href="group__events.html#g3b392d9716c4920cabefdd29e78dd542">yaml.h</a>
-<li>yaml_event_type_t
-: <a class="el" href="group__events.html#g8934661be36bd7c9d17a8af69eff89a1">yaml.h</a>
-<li>yaml_mapping_style_t
-: <a class="el" href="group__styles.html#gb47523846a5c5960e07367a28ea9750a">yaml.h</a>
-<li>yaml_mark_t
-: <a class="el" href="group__basic.html#g232eacba89691b841ba941338a302bfd">yaml.h</a>
-<li>yaml_node_item_t
-: <a class="el" href="group__nodes.html#g7cc3581582e778b00c04e99cd3656860">yaml.h</a>
-<li>yaml_node_pair_t
-: <a class="el" href="group__nodes.html#g90f1c8b83c5c38dc4016afc1cc2050c4">yaml.h</a>
-<li>yaml_node_t
-: <a class="el" href="group__nodes.html#g9eaaa233b120b9d9db47de93c294c40f">yaml.h</a>
-<li>yaml_node_type_t
-: <a class="el" href="group__nodes.html#gbe020d2fc42d3e896549e9f97da622d2">yaml.h</a>
-<li>yaml_parser_state_t
-: <a class="el" href="group__parser.html#g52b56d3e3cee0f9ba460978802a8c83b">yaml.h</a>
-<li>yaml_parser_t
-: <a class="el" href="group__parser.html#gfdc6319cb28a8b8034542b29be85b0c4">yaml.h</a>
-<li>yaml_read_handler_t
-: <a class="el" href="group__parser.html#g4982f7e4e001ddb47d2819f38f0cd9d6">yaml.h</a>
-<li>yaml_scalar_style_t
-: <a class="el" href="group__styles.html#g3fa6405631e1afe5bd5c488a6c5e8065">yaml.h</a>
-<li>yaml_sequence_style_t
-: <a class="el" href="group__styles.html#g58a1123d271e56c72de6abf852ac4dc2">yaml.h</a>
-<li>yaml_simple_key_t
-: <a class="el" href="group__parser.html#ge5570fbb7ab7c8332cd666f3a9c26591">yaml.h</a>
-<li>yaml_tag_directive_t
-: <a class="el" href="group__basic.html#g0b4bc4871b0c9104e32d40d5f3803674">yaml.h</a>
-<li>yaml_token_t
-: <a class="el" href="group__tokens.html#g1ed3dc460e62aee8270c5d63d5734bbb">yaml.h</a>
-<li>yaml_token_type_t
-: <a class="el" href="group__tokens.html#gba51dda022dced02f8df2224ab7993f7">yaml.h</a>
-<li>yaml_version_directive_t
-: <a class="el" href="group__basic.html#g2fc55608333fbe6df17cf891be709b72">yaml.h</a>
-<li>yaml_write_handler_t
-: <a class="el" href="group__emitter.html#g1669659aacbe631ad406c78fce1f5379">yaml.h</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/group__basic.html b/yaml-0.1.3/doc/html/group__basic.html
deleted file mode 100644
index 84480d8..0000000
--- a/yaml-0.1.3/doc/html/group__basic.html
+++ /dev/null
@@ -1,353 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Basic Types</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>Basic Types</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__version__directive__s.html">yaml_version_directive_s</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The version directive data.  <a href="structyaml__version__directive__s.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_s</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag directive data.  <a href="structyaml__tag__directive__s.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__mark__s.html">yaml_mark_s</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The pointer position.  <a href="structyaml__mark__s.html#_details">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The character type (UTF-8 octet).  <a href="#gf8657e81f0b8b05d1a081001fc6cb8bd"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <br class="typebreak">
-<a class="el" href="structyaml__version__directive__s.html">yaml_version_directive_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basic.html#g2fc55608333fbe6df17cf891be709b72">yaml_version_directive_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The version directive data.  <a href="#g2fc55608333fbe6df17cf891be709b72"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basic.html#g0b4bc4871b0c9104e32d40d5f3803674">yaml_tag_directive_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag directive data.  <a href="#g0b4bc4871b0c9104e32d40d5f3803674"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group__basic.html#gb88ee52b5d722e644c1cb4d1afcccdd9">yaml_encoding_e</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basic.html#g2170996d7e636397b5e6bc0c1b7df7c6">yaml_encoding_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The stream encoding.  <a href="#g2170996d7e636397b5e6bc0c1b7df7c6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group__basic.html#g912ad8c893126133fab5e4231db3017e">yaml_break_e</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basic.html#g64d1365e1acd4deeab50d6b48e39cb6d">yaml_break_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Line break types.  <a href="#g64d1365e1acd4deeab50d6b48e39cb6d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group__basic.html#g2efbcde2e82238117982b789c5a8ea01">yaml_error_type_e</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basic.html#g1a449f0c1b023e2ef1a596093c018e73">yaml_error_type_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Many bad things could happen with the parser and emitter.  <a href="#g1a449f0c1b023e2ef1a596093c018e73"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structyaml__mark__s.html">yaml_mark_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basic.html#g232eacba89691b841ba941338a302bfd">yaml_mark_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The pointer position.  <a href="#g232eacba89691b841ba941338a302bfd"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basic.html#gb88ee52b5d722e644c1cb4d1afcccdd9">yaml_encoding_e</a> { <br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#ggb88ee52b5d722e644c1cb4d1afcccdd9b61d2a81b8e698e642ce6ad69612fa7f">YAML_ANY_ENCODING</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#ggb88ee52b5d722e644c1cb4d1afcccdd95bacbc5e68fc0c25baedf87e3be25a28">YAML_UTF8_ENCODING</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#ggb88ee52b5d722e644c1cb4d1afcccdd9c68c68725ec1f6492e59fd388fd123c9">YAML_UTF16LE_ENCODING</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#ggb88ee52b5d722e644c1cb4d1afcccdd99f4fcb99a71d3416239f343f1334780b">YAML_UTF16BE_ENCODING</a>
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The stream encoding.  <a href="group__basic.html#gb88ee52b5d722e644c1cb4d1afcccdd9">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basic.html#g912ad8c893126133fab5e4231db3017e">yaml_break_e</a> { <br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#gg912ad8c893126133fab5e4231db3017e052bd56adef565c33a86fcc05b49513f">YAML_ANY_BREAK</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#gg912ad8c893126133fab5e4231db3017e116a98ba4ed0bacfdf098a7d5beeb9d4">YAML_CR_BREAK</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#gg912ad8c893126133fab5e4231db3017e23bf395462dcd045e22303be6f3f7781">YAML_LN_BREAK</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#gg912ad8c893126133fab5e4231db3017e15f8daa406870ebfe82b85781c2468f3">YAML_CRLN_BREAK</a>
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Line break types.  <a href="group__basic.html#g912ad8c893126133fab5e4231db3017e">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basic.html#g2efbcde2e82238117982b789c5a8ea01">yaml_error_type_e</a> { <br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea0124cadfb5364769959ad8647649d1e86f">YAML_NO_ERROR</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea0157be0407d1f344206d9673c9571bde53">YAML_MEMORY_ERROR</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea019216f41a453dc36b090cdc1ca9f89637">YAML_READER_ERROR</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea016f8d865d9a25b385146660d8260d3d6f">YAML_SCANNER_ERROR</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea010e12c79d8586bc61470e3088b666078b">YAML_PARSER_ERROR</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea0143d6eb640e50a1b1ec843cc54ab15f2b">YAML_COMPOSER_ERROR</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea01e80fef003be3d7e72ed7acae7984004c">YAML_WRITER_ERROR</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea018ec99a26382dd2853a5550027f6e9db1">YAML_EMITTER_ERROR</a>
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Many bad things could happen with the parser and emitter.  <a href="group__basic.html#g2efbcde2e82238117982b789c5a8ea01">More...</a><br></td></tr>
-</table>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="gf8657e81f0b8b05d1a081001fc6cb8bd"></a><!-- doxytag: member="yaml.h::yaml_char_t" ref="gf8657e81f0b8b05d1a081001fc6cb8bd" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef unsigned char <a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The character type (UTF-8 octet). 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="g2fc55608333fbe6df17cf891be709b72"></a><!-- doxytag: member="yaml.h::yaml_version_directive_t" ref="g2fc55608333fbe6df17cf891be709b72" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef struct <a class="el" href="structyaml__version__directive__s.html">yaml_version_directive_s</a>  <a class="el" href="structyaml__version__directive__s.html">yaml_version_directive_t</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The version directive data. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="g0b4bc4871b0c9104e32d40d5f3803674"></a><!-- doxytag: member="yaml.h::yaml_tag_directive_t" ref="g0b4bc4871b0c9104e32d40d5f3803674" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef struct <a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_s</a>  <a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The tag directive data. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="g2170996d7e636397b5e6bc0c1b7df7c6"></a><!-- doxytag: member="yaml.h::yaml_encoding_t" ref="g2170996d7e636397b5e6bc0c1b7df7c6" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef enum <a class="el" href="group__basic.html#gb88ee52b5d722e644c1cb4d1afcccdd9">yaml_encoding_e</a>  <a class="el" href="group__basic.html#g2170996d7e636397b5e6bc0c1b7df7c6">yaml_encoding_t</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The stream encoding. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="g64d1365e1acd4deeab50d6b48e39cb6d"></a><!-- doxytag: member="yaml.h::yaml_break_t" ref="g64d1365e1acd4deeab50d6b48e39cb6d" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef enum <a class="el" href="group__basic.html#g912ad8c893126133fab5e4231db3017e">yaml_break_e</a>  <a class="el" href="group__basic.html#g64d1365e1acd4deeab50d6b48e39cb6d">yaml_break_t</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Line break types. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="g1a449f0c1b023e2ef1a596093c018e73"></a><!-- doxytag: member="yaml.h::yaml_error_type_t" ref="g1a449f0c1b023e2ef1a596093c018e73" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef enum <a class="el" href="group__basic.html#g2efbcde2e82238117982b789c5a8ea01">yaml_error_type_e</a>  <a class="el" href="group__basic.html#g1a449f0c1b023e2ef1a596093c018e73">yaml_error_type_t</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Many bad things could happen with the parser and emitter. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="g232eacba89691b841ba941338a302bfd"></a><!-- doxytag: member="yaml.h::yaml_mark_t" ref="g232eacba89691b841ba941338a302bfd" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef struct <a class="el" href="structyaml__mark__s.html">yaml_mark_s</a>  <a class="el" href="structyaml__mark__s.html">yaml_mark_t</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The pointer position. 
-<p>
-
-</div>
-</div><p>
-<hr><h2>Enumeration Type Documentation</h2>
-<a class="anchor" name="gb88ee52b5d722e644c1cb4d1afcccdd9"></a><!-- doxytag: member="yaml.h::yaml_encoding_e" ref="gb88ee52b5d722e644c1cb4d1afcccdd9" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">enum <a class="el" href="group__basic.html#gb88ee52b5d722e644c1cb4d1afcccdd9">yaml_encoding_e</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The stream encoding. 
-<p>
-<dl compact><dt><b>Enumerator: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="ggb88ee52b5d722e644c1cb4d1afcccdd9b61d2a81b8e698e642ce6ad69612fa7f"></a><!-- doxytag: member="YAML_ANY_ENCODING" ref="ggb88ee52b5d722e644c1cb4d1afcccdd9b61d2a81b8e698e642ce6ad69612fa7f" args="" -->YAML_ANY_ENCODING</em>&nbsp;</td><td>
-Let the parser choose the encoding. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggb88ee52b5d722e644c1cb4d1afcccdd95bacbc5e68fc0c25baedf87e3be25a28"></a><!-- doxytag: member="YAML_UTF8_ENCODING" ref="ggb88ee52b5d722e644c1cb4d1afcccdd95bacbc5e68fc0c25baedf87e3be25a28" args="" -->YAML_UTF8_ENCODING</em>&nbsp;</td><td>
-The default UTF-8 encoding. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggb88ee52b5d722e644c1cb4d1afcccdd9c68c68725ec1f6492e59fd388fd123c9"></a><!-- doxytag: member="YAML_UTF16LE_ENCODING" ref="ggb88ee52b5d722e644c1cb4d1afcccdd9c68c68725ec1f6492e59fd388fd123c9" args="" -->YAML_UTF16LE_ENCODING</em>&nbsp;</td><td>
-The UTF-16-LE encoding with BOM. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggb88ee52b5d722e644c1cb4d1afcccdd99f4fcb99a71d3416239f343f1334780b"></a><!-- doxytag: member="YAML_UTF16BE_ENCODING" ref="ggb88ee52b5d722e644c1cb4d1afcccdd99f4fcb99a71d3416239f343f1334780b" args="" -->YAML_UTF16BE_ENCODING</em>&nbsp;</td><td>
-The UTF-16-BE encoding with BOM. 
-<p>
-</td></tr>
-</table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g912ad8c893126133fab5e4231db3017e"></a><!-- doxytag: member="yaml.h::yaml_break_e" ref="g912ad8c893126133fab5e4231db3017e" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">enum <a class="el" href="group__basic.html#g912ad8c893126133fab5e4231db3017e">yaml_break_e</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Line break types. 
-<p>
-<dl compact><dt><b>Enumerator: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="gg912ad8c893126133fab5e4231db3017e052bd56adef565c33a86fcc05b49513f"></a><!-- doxytag: member="YAML_ANY_BREAK" ref="gg912ad8c893126133fab5e4231db3017e052bd56adef565c33a86fcc05b49513f" args="" -->YAML_ANY_BREAK</em>&nbsp;</td><td>
-Let the parser choose the break type. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg912ad8c893126133fab5e4231db3017e116a98ba4ed0bacfdf098a7d5beeb9d4"></a><!-- doxytag: member="YAML_CR_BREAK" ref="gg912ad8c893126133fab5e4231db3017e116a98ba4ed0bacfdf098a7d5beeb9d4" args="" -->YAML_CR_BREAK</em>&nbsp;</td><td>
-Use CR for line breaks (Mac style). 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg912ad8c893126133fab5e4231db3017e23bf395462dcd045e22303be6f3f7781"></a><!-- doxytag: member="YAML_LN_BREAK" ref="gg912ad8c893126133fab5e4231db3017e23bf395462dcd045e22303be6f3f7781" args="" -->YAML_LN_BREAK</em>&nbsp;</td><td>
-Use LN for line breaks (Unix style). 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg912ad8c893126133fab5e4231db3017e15f8daa406870ebfe82b85781c2468f3"></a><!-- doxytag: member="YAML_CRLN_BREAK" ref="gg912ad8c893126133fab5e4231db3017e15f8daa406870ebfe82b85781c2468f3" args="" -->YAML_CRLN_BREAK</em>&nbsp;</td><td>
-Use CR LN for line breaks (DOS style). 
-<p>
-</td></tr>
-</table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g2efbcde2e82238117982b789c5a8ea01"></a><!-- doxytag: member="yaml.h::yaml_error_type_e" ref="g2efbcde2e82238117982b789c5a8ea01" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">enum <a class="el" href="group__basic.html#g2efbcde2e82238117982b789c5a8ea01">yaml_error_type_e</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Many bad things could happen with the parser and emitter. 
-<p>
-<dl compact><dt><b>Enumerator: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="gg2efbcde2e82238117982b789c5a8ea0124cadfb5364769959ad8647649d1e86f"></a><!-- doxytag: member="YAML_NO_ERROR" ref="gg2efbcde2e82238117982b789c5a8ea0124cadfb5364769959ad8647649d1e86f" args="" -->YAML_NO_ERROR</em>&nbsp;</td><td>
-No error is produced. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg2efbcde2e82238117982b789c5a8ea0157be0407d1f344206d9673c9571bde53"></a><!-- doxytag: member="YAML_MEMORY_ERROR" ref="gg2efbcde2e82238117982b789c5a8ea0157be0407d1f344206d9673c9571bde53" args="" -->YAML_MEMORY_ERROR</em>&nbsp;</td><td>
-Cannot allocate or reallocate a block of memory. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg2efbcde2e82238117982b789c5a8ea019216f41a453dc36b090cdc1ca9f89637"></a><!-- doxytag: member="YAML_READER_ERROR" ref="gg2efbcde2e82238117982b789c5a8ea019216f41a453dc36b090cdc1ca9f89637" args="" -->YAML_READER_ERROR</em>&nbsp;</td><td>
-Cannot read or decode the input stream. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg2efbcde2e82238117982b789c5a8ea016f8d865d9a25b385146660d8260d3d6f"></a><!-- doxytag: member="YAML_SCANNER_ERROR" ref="gg2efbcde2e82238117982b789c5a8ea016f8d865d9a25b385146660d8260d3d6f" args="" -->YAML_SCANNER_ERROR</em>&nbsp;</td><td>
-Cannot scan the input stream. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg2efbcde2e82238117982b789c5a8ea010e12c79d8586bc61470e3088b666078b"></a><!-- doxytag: member="YAML_PARSER_ERROR" ref="gg2efbcde2e82238117982b789c5a8ea010e12c79d8586bc61470e3088b666078b" args="" -->YAML_PARSER_ERROR</em>&nbsp;</td><td>
-Cannot parse the input stream. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg2efbcde2e82238117982b789c5a8ea0143d6eb640e50a1b1ec843cc54ab15f2b"></a><!-- doxytag: member="YAML_COMPOSER_ERROR" ref="gg2efbcde2e82238117982b789c5a8ea0143d6eb640e50a1b1ec843cc54ab15f2b" args="" -->YAML_COMPOSER_ERROR</em>&nbsp;</td><td>
-Cannot compose a YAML document. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg2efbcde2e82238117982b789c5a8ea01e80fef003be3d7e72ed7acae7984004c"></a><!-- doxytag: member="YAML_WRITER_ERROR" ref="gg2efbcde2e82238117982b789c5a8ea01e80fef003be3d7e72ed7acae7984004c" args="" -->YAML_WRITER_ERROR</em>&nbsp;</td><td>
-Cannot write to the output stream. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg2efbcde2e82238117982b789c5a8ea018ec99a26382dd2853a5550027f6e9db1"></a><!-- doxytag: member="YAML_EMITTER_ERROR" ref="gg2efbcde2e82238117982b789c5a8ea018ec99a26382dd2853a5550027f6e9db1" args="" -->YAML_EMITTER_ERROR</em>&nbsp;</td><td>
-Cannot emit a YAML stream. 
-<p>
-</td></tr>
-</table>
-</dl>
-
-</div>
-</div><p>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/group__emitter.html b/yaml-0.1.3/doc/html/group__emitter.html
deleted file mode 100644
index b11d2c2..0000000
--- a/yaml-0.1.3/doc/html/group__emitter.html
+++ /dev/null
@@ -1,864 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Emitter Definitions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>Emitter Definitions</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html">yaml_emitter_s</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The emitter structure.  <a href="structyaml__emitter__s.html#_details">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#g1669659aacbe631ad406c78fce1f5379">yaml_write_handler_t</a> (void *data, unsigned char *buffer, size_t size)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The prototype of a write handler.  <a href="#g1669659aacbe631ad406c78fce1f5379"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group__emitter.html#g387b79da11c3941e43a56947263aa721">yaml_emitter_state_e</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#g0889461fa3efe8eee881aef48a4ba6b2">yaml_emitter_state_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The emitter states.  <a href="#g0889461fa3efe8eee881aef48a4ba6b2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structyaml__emitter__s.html">yaml_emitter_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#g4ce3e054f0016c49d9e8c36d359e710b">yaml_emitter_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The emitter structure.  <a href="#g4ce3e054f0016c49d9e8c36d359e710b"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#g387b79da11c3941e43a56947263aa721">yaml_emitter_state_e</a> { <br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721a013a33dab710fe9a30ba014af27b81d">YAML_EMIT_STREAM_START_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721b1ae25188f02581a137f66c4b6e084ae">YAML_EMIT_FIRST_DOCUMENT_START_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721678d8c3146f0b2c84e0fc537a9b1109f">YAML_EMIT_DOCUMENT_START_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa7215ce3ed6155496a6fbd7384e310c58bec">YAML_EMIT_DOCUMENT_CONTENT_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721100cad4538be033202da4bb85f8443d3">YAML_EMIT_DOCUMENT_END_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa7215a36fc535f3a5720fbb86712959e5654">YAML_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721ded45f1dee80027d7b9c6ce061c08767">YAML_EMIT_FLOW_SEQUENCE_ITEM_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721b811f3d642dacc7c413af2c32356f894">YAML_EMIT_FLOW_MAPPING_FIRST_KEY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721babf835ee5cd4c6de2231e2a49e40626">YAML_EMIT_FLOW_MAPPING_KEY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721a6f687a6b57e727f0e7b7a2687ad7383">YAML_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721cb6dbcb535248b8fde779aeedc957b2e">YAML_EMIT_FLOW_MAPPING_VALUE_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa72168af7c090c6d0187788e390341f0cc4d">YAML_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa7218197c180c3cefee7b67304e17b52c5ff">YAML_EMIT_BLOCK_SEQUENCE_ITEM_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721ee36d46c1facecfd73fab73e3343226e">YAML_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa72158495cae63b8c3d7c389b1281baeec05">YAML_EMIT_BLOCK_MAPPING_KEY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa7214aa3c6bf2f2d976c47289c741d7a8704">YAML_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa7217e0f7fac64fc64bb2bc9fe2ec93ca564">YAML_EMIT_BLOCK_MAPPING_VALUE_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa7212a0232912eaf4eeb06594ee6157dfbc0">YAML_EMIT_END_STATE</a>
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The emitter states.  <a href="group__emitter.html#g387b79da11c3941e43a56947263aa721">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#g83649205374285802fc27aa293ecd111">yaml_emitter_initialize</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize an emitter.  <a href="#g83649205374285802fc27aa293ecd111"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#gd705212f3a5150e3f00075fd90bc8c3d">yaml_emitter_delete</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy an emitter.  <a href="#gd705212f3a5150e3f00075fd90bc8c3d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#g62725c0f616f634588374d1a4c0ed35a">yaml_emitter_set_output_string</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter, unsigned char *output, size_t size, size_t *size_written)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a string output.  <a href="#g62725c0f616f634588374d1a4c0ed35a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#gf7610c61b303bde9c701024c10ece024">yaml_emitter_set_output_file</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter, FILE *file)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a file output.  <a href="#gf7610c61b303bde9c701024c10ece024"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#gc85a6a212ed7b469fb426a3451d15922">yaml_emitter_set_output</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter, <a class="el" href="group__emitter.html#g1669659aacbe631ad406c78fce1f5379">yaml_write_handler_t</a> *handler, void *data)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a generic output handler.  <a href="#gc85a6a212ed7b469fb426a3451d15922"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#gbc22888ec8bf942199acbf38f7a0b9bb">yaml_emitter_set_encoding</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter, <a class="el" href="group__basic.html#g2170996d7e636397b5e6bc0c1b7df7c6">yaml_encoding_t</a> encoding)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the output encoding.  <a href="#gbc22888ec8bf942199acbf38f7a0b9bb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#g62713a8130e11d95cbefa95a2eb3ac4b">yaml_emitter_set_canonical</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter, int canonical)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set if the output should be in the "canonical" format as in the YAML specification.  <a href="#g62713a8130e11d95cbefa95a2eb3ac4b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#g07eca3c344053a9028b4a84291cdf4d7">yaml_emitter_set_indent</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter, int indent)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the intendation increment.  <a href="#g07eca3c344053a9028b4a84291cdf4d7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#ga91ae0fa8af5ab67e64567e08f4458c2">yaml_emitter_set_width</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter, int width)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the preferred line width.  <a href="#ga91ae0fa8af5ab67e64567e08f4458c2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#ga59e7dcf24cb9b614c32af6c3e949fc3">yaml_emitter_set_unicode</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter, int unicode)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set if unescaped non-ASCII characters are allowed.  <a href="#ga59e7dcf24cb9b614c32af6c3e949fc3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#g04b5494f0b8244eec359579c31d5e20c">yaml_emitter_set_break</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter, <a class="el" href="group__basic.html#g64d1365e1acd4deeab50d6b48e39cb6d">yaml_break_t</a> line_break)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the preferred line break.  <a href="#g04b5494f0b8244eec359579c31d5e20c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#g4d6c0f8e712797e2660e69479fdae433">yaml_emitter_emit</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter, <a class="el" href="structyaml__event__s.html">yaml_event_t</a> *event)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Emit an event.  <a href="#g4d6c0f8e712797e2660e69479fdae433"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#ge323c34e378040106f24c7b5ab834b16">yaml_emitter_open</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Start a YAML stream.  <a href="#ge323c34e378040106f24c7b5ab834b16"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#ga91442864679280985df14b2d96b8c42">yaml_emitter_close</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Finish a YAML stream.  <a href="#ga91442864679280985df14b2d96b8c42"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#g5f0306abe9bff373b5bc339913b3769c">yaml_emitter_dump</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter, <a class="el" href="structyaml__document__s.html">yaml_document_t</a> *document)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Emit a YAML document.  <a href="#g5f0306abe9bff373b5bc339913b3769c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#gcaf24456e2bf85bc5654cbd7d828055f">yaml_emitter_flush</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Flush the accumulated characters to the output.  <a href="#gcaf24456e2bf85bc5654cbd7d828055f"></a><br></td></tr>
-</table>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="g1669659aacbe631ad406c78fce1f5379"></a><!-- doxytag: member="yaml.h::yaml_write_handler_t" ref="g1669659aacbe631ad406c78fce1f5379" args="(void *data, unsigned char *buffer, size_t size)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef int <a class="el" href="group__emitter.html#g1669659aacbe631ad406c78fce1f5379">yaml_write_handler_t</a>(void *data, unsigned char *buffer, size_t size)          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The prototype of a write handler. 
-<p>
-The write handler is called when the emitter needs to flush the accumulated characters to the output. The handler should write <em>size</em> bytes of the <em>buffer</em> to the output.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>data</em>&nbsp;</td><td>A pointer to an application data specified by <a class="el" href="group__emitter.html#gc85a6a212ed7b469fb426a3451d15922" title="Set a generic output handler.">yaml_emitter_set_output()</a>. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>buffer</em>&nbsp;</td><td>The buffer with bytes to be written. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>size</em>&nbsp;</td><td>The size of the buffer.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, the handler should return <code>1</code>. If the handler failed, the returned value should be <code>0</code>. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g0889461fa3efe8eee881aef48a4ba6b2"></a><!-- doxytag: member="yaml.h::yaml_emitter_state_t" ref="g0889461fa3efe8eee881aef48a4ba6b2" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef enum <a class="el" href="group__emitter.html#g387b79da11c3941e43a56947263aa721">yaml_emitter_state_e</a>  <a class="el" href="group__emitter.html#g0889461fa3efe8eee881aef48a4ba6b2">yaml_emitter_state_t</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The emitter states. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="g4ce3e054f0016c49d9e8c36d359e710b"></a><!-- doxytag: member="yaml.h::yaml_emitter_t" ref="g4ce3e054f0016c49d9e8c36d359e710b" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef struct <a class="el" href="structyaml__emitter__s.html">yaml_emitter_s</a>  <a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The emitter structure. 
-<p>
-All members are internal. Manage the structure using the <code>yaml_emitter_</code> family of functions. 
-</div>
-</div><p>
-<hr><h2>Enumeration Type Documentation</h2>
-<a class="anchor" name="g387b79da11c3941e43a56947263aa721"></a><!-- doxytag: member="yaml.h::yaml_emitter_state_e" ref="g387b79da11c3941e43a56947263aa721" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">enum <a class="el" href="group__emitter.html#g387b79da11c3941e43a56947263aa721">yaml_emitter_state_e</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The emitter states. 
-<p>
-<dl compact><dt><b>Enumerator: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="gg387b79da11c3941e43a56947263aa721a013a33dab710fe9a30ba014af27b81d"></a><!-- doxytag: member="YAML_EMIT_STREAM_START_STATE" ref="gg387b79da11c3941e43a56947263aa721a013a33dab710fe9a30ba014af27b81d" args="" -->YAML_EMIT_STREAM_START_STATE</em>&nbsp;</td><td>
-Expect STREAM-START. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg387b79da11c3941e43a56947263aa721b1ae25188f02581a137f66c4b6e084ae"></a><!-- doxytag: member="YAML_EMIT_FIRST_DOCUMENT_START_STATE" ref="gg387b79da11c3941e43a56947263aa721b1ae25188f02581a137f66c4b6e084ae" args="" -->YAML_EMIT_FIRST_DOCUMENT_START_STATE</em>&nbsp;</td><td>
-Expect the first DOCUMENT-START or STREAM-END. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg387b79da11c3941e43a56947263aa721678d8c3146f0b2c84e0fc537a9b1109f"></a><!-- doxytag: member="YAML_EMIT_DOCUMENT_START_STATE" ref="gg387b79da11c3941e43a56947263aa721678d8c3146f0b2c84e0fc537a9b1109f" args="" -->YAML_EMIT_DOCUMENT_START_STATE</em>&nbsp;</td><td>
-Expect DOCUMENT-START or STREAM-END. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg387b79da11c3941e43a56947263aa7215ce3ed6155496a6fbd7384e310c58bec"></a><!-- doxytag: member="YAML_EMIT_DOCUMENT_CONTENT_STATE" ref="gg387b79da11c3941e43a56947263aa7215ce3ed6155496a6fbd7384e310c58bec" args="" -->YAML_EMIT_DOCUMENT_CONTENT_STATE</em>&nbsp;</td><td>
-Expect the content of a document. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg387b79da11c3941e43a56947263aa721100cad4538be033202da4bb85f8443d3"></a><!-- doxytag: member="YAML_EMIT_DOCUMENT_END_STATE" ref="gg387b79da11c3941e43a56947263aa721100cad4538be033202da4bb85f8443d3" args="" -->YAML_EMIT_DOCUMENT_END_STATE</em>&nbsp;</td><td>
-Expect DOCUMENT-END. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg387b79da11c3941e43a56947263aa7215a36fc535f3a5720fbb86712959e5654"></a><!-- doxytag: member="YAML_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE" ref="gg387b79da11c3941e43a56947263aa7215a36fc535f3a5720fbb86712959e5654" args="" -->YAML_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE</em>&nbsp;</td><td>
-Expect the first item of a flow sequence. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg387b79da11c3941e43a56947263aa721ded45f1dee80027d7b9c6ce061c08767"></a><!-- doxytag: member="YAML_EMIT_FLOW_SEQUENCE_ITEM_STATE" ref="gg387b79da11c3941e43a56947263aa721ded45f1dee80027d7b9c6ce061c08767" args="" -->YAML_EMIT_FLOW_SEQUENCE_ITEM_STATE</em>&nbsp;</td><td>
-Expect an item of a flow sequence. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg387b79da11c3941e43a56947263aa721b811f3d642dacc7c413af2c32356f894"></a><!-- doxytag: member="YAML_EMIT_FLOW_MAPPING_FIRST_KEY_STATE" ref="gg387b79da11c3941e43a56947263aa721b811f3d642dacc7c413af2c32356f894" args="" -->YAML_EMIT_FLOW_MAPPING_FIRST_KEY_STATE</em>&nbsp;</td><td>
-Expect the first key of a flow mapping. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg387b79da11c3941e43a56947263aa721babf835ee5cd4c6de2231e2a49e40626"></a><!-- doxytag: member="YAML_EMIT_FLOW_MAPPING_KEY_STATE" ref="gg387b79da11c3941e43a56947263aa721babf835ee5cd4c6de2231e2a49e40626" args="" -->YAML_EMIT_FLOW_MAPPING_KEY_STATE</em>&nbsp;</td><td>
-Expect a key of a flow mapping. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg387b79da11c3941e43a56947263aa721a6f687a6b57e727f0e7b7a2687ad7383"></a><!-- doxytag: member="YAML_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE" ref="gg387b79da11c3941e43a56947263aa721a6f687a6b57e727f0e7b7a2687ad7383" args="" -->YAML_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE</em>&nbsp;</td><td>
-Expect a value for a simple key of a flow mapping. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg387b79da11c3941e43a56947263aa721cb6dbcb535248b8fde779aeedc957b2e"></a><!-- doxytag: member="YAML_EMIT_FLOW_MAPPING_VALUE_STATE" ref="gg387b79da11c3941e43a56947263aa721cb6dbcb535248b8fde779aeedc957b2e" args="" -->YAML_EMIT_FLOW_MAPPING_VALUE_STATE</em>&nbsp;</td><td>
-Expect a value of a flow mapping. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg387b79da11c3941e43a56947263aa72168af7c090c6d0187788e390341f0cc4d"></a><!-- doxytag: member="YAML_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE" ref="gg387b79da11c3941e43a56947263aa72168af7c090c6d0187788e390341f0cc4d" args="" -->YAML_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE</em>&nbsp;</td><td>
-Expect the first item of a block sequence. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg387b79da11c3941e43a56947263aa7218197c180c3cefee7b67304e17b52c5ff"></a><!-- doxytag: member="YAML_EMIT_BLOCK_SEQUENCE_ITEM_STATE" ref="gg387b79da11c3941e43a56947263aa7218197c180c3cefee7b67304e17b52c5ff" args="" -->YAML_EMIT_BLOCK_SEQUENCE_ITEM_STATE</em>&nbsp;</td><td>
-Expect an item of a block sequence. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg387b79da11c3941e43a56947263aa721ee36d46c1facecfd73fab73e3343226e"></a><!-- doxytag: member="YAML_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE" ref="gg387b79da11c3941e43a56947263aa721ee36d46c1facecfd73fab73e3343226e" args="" -->YAML_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE</em>&nbsp;</td><td>
-Expect the first key of a block mapping. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg387b79da11c3941e43a56947263aa72158495cae63b8c3d7c389b1281baeec05"></a><!-- doxytag: member="YAML_EMIT_BLOCK_MAPPING_KEY_STATE" ref="gg387b79da11c3941e43a56947263aa72158495cae63b8c3d7c389b1281baeec05" args="" -->YAML_EMIT_BLOCK_MAPPING_KEY_STATE</em>&nbsp;</td><td>
-Expect the key of a block mapping. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg387b79da11c3941e43a56947263aa7214aa3c6bf2f2d976c47289c741d7a8704"></a><!-- doxytag: member="YAML_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE" ref="gg387b79da11c3941e43a56947263aa7214aa3c6bf2f2d976c47289c741d7a8704" args="" -->YAML_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE</em>&nbsp;</td><td>
-Expect a value for a simple key of a block mapping. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg387b79da11c3941e43a56947263aa7217e0f7fac64fc64bb2bc9fe2ec93ca564"></a><!-- doxytag: member="YAML_EMIT_BLOCK_MAPPING_VALUE_STATE" ref="gg387b79da11c3941e43a56947263aa7217e0f7fac64fc64bb2bc9fe2ec93ca564" args="" -->YAML_EMIT_BLOCK_MAPPING_VALUE_STATE</em>&nbsp;</td><td>
-Expect a value of a block mapping. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg387b79da11c3941e43a56947263aa7212a0232912eaf4eeb06594ee6157dfbc0"></a><!-- doxytag: member="YAML_EMIT_END_STATE" ref="gg387b79da11c3941e43a56947263aa7212a0232912eaf4eeb06594ee6157dfbc0" args="" -->YAML_EMIT_END_STATE</em>&nbsp;</td><td>
-Expect nothing. 
-<p>
-</td></tr>
-</table>
-</dl>
-
-</div>
-</div><p>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="g83649205374285802fc27aa293ecd111"></a><!-- doxytag: member="yaml.h::yaml_emitter_initialize" ref="g83649205374285802fc27aa293ecd111" args="(yaml_emitter_t *emitter)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int yaml_emitter_initialize           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>emitter</em>          </td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Initialize an emitter. 
-<p>
-This function creates a new emitter object. An application is responsible for destroying the object using the <a class="el" href="group__emitter.html#gd705212f3a5150e3f00075fd90bc8c3d" title="Destroy an emitter.">yaml_emitter_delete()</a> function.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>emitter</em>&nbsp;</td><td>An empty parser object.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><code>1</code> if the function succeeded, <code>0</code> on error. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="gd705212f3a5150e3f00075fd90bc8c3d"></a><!-- doxytag: member="yaml.h::yaml_emitter_delete" ref="gd705212f3a5150e3f00075fd90bc8c3d" args="(yaml_emitter_t *emitter)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void yaml_emitter_delete           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>emitter</em>          </td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Destroy an emitter. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>emitter</em>&nbsp;</td><td>An emitter object. </td></tr>
-  </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g62725c0f616f634588374d1a4c0ed35a"></a><!-- doxytag: member="yaml.h::yaml_emitter_set_output_string" ref="g62725c0f616f634588374d1a4c0ed35a" args="(yaml_emitter_t *emitter, unsigned char *output, size_t size, size_t *size_written)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void yaml_emitter_set_output_string           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>emitter</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned char *&nbsp;</td>
-          <td class="paramname"> <em>output</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t&nbsp;</td>
-          <td class="paramname"> <em>size</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t *&nbsp;</td>
-          <td class="paramname"> <em>size_written</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set a string output. 
-<p>
-The emitter will write the output characters to the <em>output</em> buffer of the size <em>size</em>. The emitter will set <em>size_written</em> to the number of written bytes. If the buffer is smaller than required, the emitter produces the YAML_WRITE_ERROR error.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>emitter</em>&nbsp;</td><td>An emitter object. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>output</em>&nbsp;</td><td>An output buffer. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>size</em>&nbsp;</td><td>The buffer size. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>size_written</em>&nbsp;</td><td>The pointer to save the number of written bytes. </td></tr>
-  </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="gf7610c61b303bde9c701024c10ece024"></a><!-- doxytag: member="yaml.h::yaml_emitter_set_output_file" ref="gf7610c61b303bde9c701024c10ece024" args="(yaml_emitter_t *emitter, FILE *file)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void yaml_emitter_set_output_file           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>emitter</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">FILE *&nbsp;</td>
-          <td class="paramname"> <em>file</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set a file output. 
-<p>
-<em>file</em> should be a file object open for writing. The application is responsible for closing the <em>file</em>.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>emitter</em>&nbsp;</td><td>An emitter object. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>file</em>&nbsp;</td><td>An open file. </td></tr>
-  </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="gc85a6a212ed7b469fb426a3451d15922"></a><!-- doxytag: member="yaml.h::yaml_emitter_set_output" ref="gc85a6a212ed7b469fb426a3451d15922" args="(yaml_emitter_t *emitter, yaml_write_handler_t *handler, void *data)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void yaml_emitter_set_output           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>emitter</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__emitter.html#g1669659aacbe631ad406c78fce1f5379">yaml_write_handler_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>handler</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">void *&nbsp;</td>
-          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set a generic output handler. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>emitter</em>&nbsp;</td><td>An emitter object. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>handler</em>&nbsp;</td><td>A write handler. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>data</em>&nbsp;</td><td>Any application data for passing to the write handler. </td></tr>
-  </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="gbc22888ec8bf942199acbf38f7a0b9bb"></a><!-- doxytag: member="yaml.h::yaml_emitter_set_encoding" ref="gbc22888ec8bf942199acbf38f7a0b9bb" args="(yaml_emitter_t *emitter, yaml_encoding_t encoding)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void yaml_emitter_set_encoding           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>emitter</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__basic.html#g2170996d7e636397b5e6bc0c1b7df7c6">yaml_encoding_t</a>&nbsp;</td>
-          <td class="paramname"> <em>encoding</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the output encoding. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>emitter</em>&nbsp;</td><td>An emitter object. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>encoding</em>&nbsp;</td><td>The output encoding. </td></tr>
-  </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g62713a8130e11d95cbefa95a2eb3ac4b"></a><!-- doxytag: member="yaml.h::yaml_emitter_set_canonical" ref="g62713a8130e11d95cbefa95a2eb3ac4b" args="(yaml_emitter_t *emitter, int canonical)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void yaml_emitter_set_canonical           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>emitter</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>canonical</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set if the output should be in the "canonical" format as in the YAML specification. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>emitter</em>&nbsp;</td><td>An emitter object. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>canonical</em>&nbsp;</td><td>If the output is canonical. </td></tr>
-  </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g07eca3c344053a9028b4a84291cdf4d7"></a><!-- doxytag: member="yaml.h::yaml_emitter_set_indent" ref="g07eca3c344053a9028b4a84291cdf4d7" args="(yaml_emitter_t *emitter, int indent)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void yaml_emitter_set_indent           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>emitter</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>indent</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the intendation increment. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>emitter</em>&nbsp;</td><td>An emitter object. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>indent</em>&nbsp;</td><td>The indentation increment (1 &lt; . &lt; 10). </td></tr>
-  </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="ga91ae0fa8af5ab67e64567e08f4458c2"></a><!-- doxytag: member="yaml.h::yaml_emitter_set_width" ref="ga91ae0fa8af5ab67e64567e08f4458c2" args="(yaml_emitter_t *emitter, int width)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void yaml_emitter_set_width           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>emitter</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>width</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the preferred line width. 
-<p>
-<code>-1</code> means unlimited.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>emitter</em>&nbsp;</td><td>An emitter object. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>width</em>&nbsp;</td><td>The preferred line width. </td></tr>
-  </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="ga59e7dcf24cb9b614c32af6c3e949fc3"></a><!-- doxytag: member="yaml.h::yaml_emitter_set_unicode" ref="ga59e7dcf24cb9b614c32af6c3e949fc3" args="(yaml_emitter_t *emitter, int unicode)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void yaml_emitter_set_unicode           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>emitter</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>unicode</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set if unescaped non-ASCII characters are allowed. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>emitter</em>&nbsp;</td><td>An emitter object. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>unicode</em>&nbsp;</td><td>If unescaped Unicode characters are allowed. </td></tr>
-  </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g04b5494f0b8244eec359579c31d5e20c"></a><!-- doxytag: member="yaml.h::yaml_emitter_set_break" ref="g04b5494f0b8244eec359579c31d5e20c" args="(yaml_emitter_t *emitter, yaml_break_t line_break)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void yaml_emitter_set_break           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>emitter</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__basic.html#g64d1365e1acd4deeab50d6b48e39cb6d">yaml_break_t</a>&nbsp;</td>
-          <td class="paramname"> <em>line_break</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the preferred line break. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>emitter</em>&nbsp;</td><td>An emitter object. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>line_break</em>&nbsp;</td><td>The preferred line break. </td></tr>
-  </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g4d6c0f8e712797e2660e69479fdae433"></a><!-- doxytag: member="yaml.h::yaml_emitter_emit" ref="g4d6c0f8e712797e2660e69479fdae433" args="(yaml_emitter_t *emitter, yaml_event_t *event)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int yaml_emitter_emit           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>emitter</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structyaml__event__s.html">yaml_event_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>event</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Emit an event. 
-<p>
-The event object may be generated using the <a class="el" href="group__parser.html#g559312fb137533d8b7e07f224fe0ec8f" title="Parse the input stream and produce the next parsing event.">yaml_parser_parse()</a> function. The emitter takes the responsibility for the event object and destroys its content after it is emitted. The event object is destroyed even if the function fails.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>emitter</em>&nbsp;</td><td>An emitter object. </td></tr>
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>event</em>&nbsp;</td><td>An event object.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><code>1</code> if the function succeeded, <code>0</code> on error. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="ge323c34e378040106f24c7b5ab834b16"></a><!-- doxytag: member="yaml.h::yaml_emitter_open" ref="ge323c34e378040106f24c7b5ab834b16" args="(yaml_emitter_t *emitter)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int yaml_emitter_open           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>emitter</em>          </td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Start a YAML stream. 
-<p>
-This function should be used before <a class="el" href="group__emitter.html#g5f0306abe9bff373b5bc339913b3769c" title="Emit a YAML document.">yaml_emitter_dump()</a> is called.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>emitter</em>&nbsp;</td><td>An emitter object.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><code>1</code> if the function succeeded, <code>0</code> on error. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="ga91442864679280985df14b2d96b8c42"></a><!-- doxytag: member="yaml.h::yaml_emitter_close" ref="ga91442864679280985df14b2d96b8c42" args="(yaml_emitter_t *emitter)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int yaml_emitter_close           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>emitter</em>          </td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Finish a YAML stream. 
-<p>
-This function should be used after <a class="el" href="group__emitter.html#g5f0306abe9bff373b5bc339913b3769c" title="Emit a YAML document.">yaml_emitter_dump()</a> is called.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>emitter</em>&nbsp;</td><td>An emitter object.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><code>1</code> if the function succeeded, <code>0</code> on error. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g5f0306abe9bff373b5bc339913b3769c"></a><!-- doxytag: member="yaml.h::yaml_emitter_dump" ref="g5f0306abe9bff373b5bc339913b3769c" args="(yaml_emitter_t *emitter, yaml_document_t *document)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int yaml_emitter_dump           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>emitter</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structyaml__document__s.html">yaml_document_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>document</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Emit a YAML document. 
-<p>
-The documen object may be generated using the <a class="el" href="group__parser.html#g9ef7d6e9494766b5880c389bc431d138" title="Parse the input stream and produce the next YAML document.">yaml_parser_load()</a> function or the <a class="el" href="group__nodes.html#g62a485c96f3b7962436a0da5e6f3cc89" title="Create a YAML document.">yaml_document_initialize()</a> function. The emitter takes the responsibility for the document object and destoys its content after it is emitted. The document object is destroyedeven if the function fails.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>emitter</em>&nbsp;</td><td>An emitter object. </td></tr>
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>document</em>&nbsp;</td><td>A document object.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><code>1</code> if the function succeeded, <code>0</code> on error. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="gcaf24456e2bf85bc5654cbd7d828055f"></a><!-- doxytag: member="yaml.h::yaml_emitter_flush" ref="gcaf24456e2bf85bc5654cbd7d828055f" args="(yaml_emitter_t *emitter)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int yaml_emitter_flush           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>emitter</em>          </td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Flush the accumulated characters to the output. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>emitter</em>&nbsp;</td><td>An emitter object.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><code>1</code> if the function succeeded, <code>0</code> on error. </dd></dl>
-
-</div>
-</div><p>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/group__events.html b/yaml-0.1.3/doc/html/group__events.html
deleted file mode 100644
index 269059e..0000000
--- a/yaml-0.1.3/doc/html/group__events.html
+++ /dev/null
@@ -1,691 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Events</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>Events</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__event__s.html">yaml_event_s</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The event structure.  <a href="structyaml__event__s.html#_details">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group__events.html#g454fccebae859c188fe3e7fa3299577c">yaml_event_type_e</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#g8934661be36bd7c9d17a8af69eff89a1">yaml_event_type_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Event types.  <a href="#g8934661be36bd7c9d17a8af69eff89a1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structyaml__event__s.html">yaml_event_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#g3b392d9716c4920cabefdd29e78dd542">yaml_event_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The event structure.  <a href="#g3b392d9716c4920cabefdd29e78dd542"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#g454fccebae859c188fe3e7fa3299577c">yaml_event_type_e</a> { <br>
-&nbsp;&nbsp;<a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577cefda9f31823fe534f094f4241d5e5eac">YAML_NO_EVENT</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577ca742e9970f14d1fe7ce4d178d79e8465">YAML_STREAM_START_EVENT</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577c4a5e76ed540645102a13352af2503d3b">YAML_STREAM_END_EVENT</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577cf4ca2b0f538029cf054cdebd09d3d6d3">YAML_DOCUMENT_START_EVENT</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577c355ec471f963827c96512e529676276f">YAML_DOCUMENT_END_EVENT</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577c8c3ce47705cfbd49a87a32bdbe544eb7">YAML_ALIAS_EVENT</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577c8b16dc795bb228e33d647d1bdf683713">YAML_SCALAR_EVENT</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577cd90ccd43e238221f542defa3c8eaf093">YAML_SEQUENCE_START_EVENT</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577c2a8af98529275987d73eb307b6a92898">YAML_SEQUENCE_END_EVENT</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577c0f6982f6d1c325ee71af518c2c66dae8">YAML_MAPPING_START_EVENT</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577cdc3dc55f17056a657005fecfb80fbd30">YAML_MAPPING_END_EVENT</a>
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Event types.  <a href="group__events.html#g454fccebae859c188fe3e7fa3299577c">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#g0650d255b23d9aae13c839f4ab3ec2ab">yaml_stream_start_event_initialize</a> (<a class="el" href="structyaml__event__s.html">yaml_event_t</a> *event, <a class="el" href="group__basic.html#g2170996d7e636397b5e6bc0c1b7df7c6">yaml_encoding_t</a> encoding)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create the STREAM-START event.  <a href="#g0650d255b23d9aae13c839f4ab3ec2ab"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#g84cf0c3ff01251c852c71624e64df9fe">yaml_stream_end_event_initialize</a> (<a class="el" href="structyaml__event__s.html">yaml_event_t</a> *event)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create the STREAM-END event.  <a href="#g84cf0c3ff01251c852c71624e64df9fe"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#g527e89302e1c969fbea5aa45664bf51c">yaml_document_start_event_initialize</a> (<a class="el" href="structyaml__event__s.html">yaml_event_t</a> *event, <a class="el" href="structyaml__version__directive__s.html">yaml_version_directive_t</a> *version_directive, <a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *tag_directives_start, <a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *tag_directives_end, int implicit)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create the DOCUMENT-START event.  <a href="#g527e89302e1c969fbea5aa45664bf51c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#g8bae16548ee88f8a5ca15204f8c30344">yaml_document_end_event_initialize</a> (<a class="el" href="structyaml__event__s.html">yaml_event_t</a> *event, int implicit)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create the DOCUMENT-END event.  <a href="#g8bae16548ee88f8a5ca15204f8c30344"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#gde4c15b75eb9a8035e04d4f0dd23f005">yaml_alias_event_initialize</a> (<a class="el" href="structyaml__event__s.html">yaml_event_t</a> *event, <a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *anchor)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create an ALIAS event.  <a href="#gde4c15b75eb9a8035e04d4f0dd23f005"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#gfc60a1a437385e19e6fb3be075958c8c">yaml_scalar_event_initialize</a> (<a class="el" href="structyaml__event__s.html">yaml_event_t</a> *event, <a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *anchor, <a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *tag, <a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *value, int length, int plain_implicit, int quoted_implicit, <a class="el" href="group__styles.html#g3fa6405631e1afe5bd5c488a6c5e8065">yaml_scalar_style_t</a> style)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a SCALAR event.  <a href="#gfc60a1a437385e19e6fb3be075958c8c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#g53aea428c768d7b131923d08c904b4eb">yaml_sequence_start_event_initialize</a> (<a class="el" href="structyaml__event__s.html">yaml_event_t</a> *event, <a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *anchor, <a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *tag, int implicit, <a class="el" href="group__styles.html#g58a1123d271e56c72de6abf852ac4dc2">yaml_sequence_style_t</a> style)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a SEQUENCE-START event.  <a href="#g53aea428c768d7b131923d08c904b4eb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#g99fdfa4b9d42b64d8171c9b22f334b1c">yaml_sequence_end_event_initialize</a> (<a class="el" href="structyaml__event__s.html">yaml_event_t</a> *event)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a SEQUENCE-END event.  <a href="#g99fdfa4b9d42b64d8171c9b22f334b1c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#g0603cf8d20f0b6dfc3be04b6360134aa">yaml_mapping_start_event_initialize</a> (<a class="el" href="structyaml__event__s.html">yaml_event_t</a> *event, <a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *anchor, <a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *tag, int implicit, <a class="el" href="group__styles.html#gb47523846a5c5960e07367a28ea9750a">yaml_mapping_style_t</a> style)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a MAPPING-START event.  <a href="#g0603cf8d20f0b6dfc3be04b6360134aa"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#g3afaf8b3aca2ec902a4e268f12adb0c2">yaml_mapping_end_event_initialize</a> (<a class="el" href="structyaml__event__s.html">yaml_event_t</a> *event)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a MAPPING-END event.  <a href="#g3afaf8b3aca2ec902a4e268f12adb0c2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#g5330d62ef52856aa53188137cb93a6a1">yaml_event_delete</a> (<a class="el" href="structyaml__event__s.html">yaml_event_t</a> *event)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free any memory allocated for an event object.  <a href="#g5330d62ef52856aa53188137cb93a6a1"></a><br></td></tr>
-</table>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="g8934661be36bd7c9d17a8af69eff89a1"></a><!-- doxytag: member="yaml.h::yaml_event_type_t" ref="g8934661be36bd7c9d17a8af69eff89a1" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef enum <a class="el" href="group__events.html#g454fccebae859c188fe3e7fa3299577c">yaml_event_type_e</a>  <a class="el" href="group__events.html#g8934661be36bd7c9d17a8af69eff89a1">yaml_event_type_t</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Event types. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="g3b392d9716c4920cabefdd29e78dd542"></a><!-- doxytag: member="yaml.h::yaml_event_t" ref="g3b392d9716c4920cabefdd29e78dd542" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef struct <a class="el" href="structyaml__event__s.html">yaml_event_s</a>  <a class="el" href="structyaml__event__s.html">yaml_event_t</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The event structure. 
-<p>
-
-</div>
-</div><p>
-<hr><h2>Enumeration Type Documentation</h2>
-<a class="anchor" name="g454fccebae859c188fe3e7fa3299577c"></a><!-- doxytag: member="yaml.h::yaml_event_type_e" ref="g454fccebae859c188fe3e7fa3299577c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">enum <a class="el" href="group__events.html#g454fccebae859c188fe3e7fa3299577c">yaml_event_type_e</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Event types. 
-<p>
-<dl compact><dt><b>Enumerator: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="gg454fccebae859c188fe3e7fa3299577cefda9f31823fe534f094f4241d5e5eac"></a><!-- doxytag: member="YAML_NO_EVENT" ref="gg454fccebae859c188fe3e7fa3299577cefda9f31823fe534f094f4241d5e5eac" args="" -->YAML_NO_EVENT</em>&nbsp;</td><td>
-An empty event. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg454fccebae859c188fe3e7fa3299577ca742e9970f14d1fe7ce4d178d79e8465"></a><!-- doxytag: member="YAML_STREAM_START_EVENT" ref="gg454fccebae859c188fe3e7fa3299577ca742e9970f14d1fe7ce4d178d79e8465" args="" -->YAML_STREAM_START_EVENT</em>&nbsp;</td><td>
-A STREAM-START event. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg454fccebae859c188fe3e7fa3299577c4a5e76ed540645102a13352af2503d3b"></a><!-- doxytag: member="YAML_STREAM_END_EVENT" ref="gg454fccebae859c188fe3e7fa3299577c4a5e76ed540645102a13352af2503d3b" args="" -->YAML_STREAM_END_EVENT</em>&nbsp;</td><td>
-A STREAM-END event. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg454fccebae859c188fe3e7fa3299577cf4ca2b0f538029cf054cdebd09d3d6d3"></a><!-- doxytag: member="YAML_DOCUMENT_START_EVENT" ref="gg454fccebae859c188fe3e7fa3299577cf4ca2b0f538029cf054cdebd09d3d6d3" args="" -->YAML_DOCUMENT_START_EVENT</em>&nbsp;</td><td>
-A DOCUMENT-START event. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg454fccebae859c188fe3e7fa3299577c355ec471f963827c96512e529676276f"></a><!-- doxytag: member="YAML_DOCUMENT_END_EVENT" ref="gg454fccebae859c188fe3e7fa3299577c355ec471f963827c96512e529676276f" args="" -->YAML_DOCUMENT_END_EVENT</em>&nbsp;</td><td>
-A DOCUMENT-END event. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg454fccebae859c188fe3e7fa3299577c8c3ce47705cfbd49a87a32bdbe544eb7"></a><!-- doxytag: member="YAML_ALIAS_EVENT" ref="gg454fccebae859c188fe3e7fa3299577c8c3ce47705cfbd49a87a32bdbe544eb7" args="" -->YAML_ALIAS_EVENT</em>&nbsp;</td><td>
-An ALIAS event. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg454fccebae859c188fe3e7fa3299577c8b16dc795bb228e33d647d1bdf683713"></a><!-- doxytag: member="YAML_SCALAR_EVENT" ref="gg454fccebae859c188fe3e7fa3299577c8b16dc795bb228e33d647d1bdf683713" args="" -->YAML_SCALAR_EVENT</em>&nbsp;</td><td>
-A SCALAR event. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg454fccebae859c188fe3e7fa3299577cd90ccd43e238221f542defa3c8eaf093"></a><!-- doxytag: member="YAML_SEQUENCE_START_EVENT" ref="gg454fccebae859c188fe3e7fa3299577cd90ccd43e238221f542defa3c8eaf093" args="" -->YAML_SEQUENCE_START_EVENT</em>&nbsp;</td><td>
-A SEQUENCE-START event. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg454fccebae859c188fe3e7fa3299577c2a8af98529275987d73eb307b6a92898"></a><!-- doxytag: member="YAML_SEQUENCE_END_EVENT" ref="gg454fccebae859c188fe3e7fa3299577c2a8af98529275987d73eb307b6a92898" args="" -->YAML_SEQUENCE_END_EVENT</em>&nbsp;</td><td>
-A SEQUENCE-END event. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg454fccebae859c188fe3e7fa3299577c0f6982f6d1c325ee71af518c2c66dae8"></a><!-- doxytag: member="YAML_MAPPING_START_EVENT" ref="gg454fccebae859c188fe3e7fa3299577c0f6982f6d1c325ee71af518c2c66dae8" args="" -->YAML_MAPPING_START_EVENT</em>&nbsp;</td><td>
-A MAPPING-START event. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg454fccebae859c188fe3e7fa3299577cdc3dc55f17056a657005fecfb80fbd30"></a><!-- doxytag: member="YAML_MAPPING_END_EVENT" ref="gg454fccebae859c188fe3e7fa3299577cdc3dc55f17056a657005fecfb80fbd30" args="" -->YAML_MAPPING_END_EVENT</em>&nbsp;</td><td>
-A MAPPING-END event. 
-<p>
-</td></tr>
-</table>
-</dl>
-
-</div>
-</div><p>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="g0650d255b23d9aae13c839f4ab3ec2ab"></a><!-- doxytag: member="yaml.h::yaml_stream_start_event_initialize" ref="g0650d255b23d9aae13c839f4ab3ec2ab" args="(yaml_event_t *event, yaml_encoding_t encoding)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int yaml_stream_start_event_initialize           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__event__s.html">yaml_event_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>event</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__basic.html#g2170996d7e636397b5e6bc0c1b7df7c6">yaml_encoding_t</a>&nbsp;</td>
-          <td class="paramname"> <em>encoding</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create the STREAM-START event. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>event</em>&nbsp;</td><td>An empty event object. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>encoding</em>&nbsp;</td><td>The stream encoding.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><code>1</code> if the function succeeded, <code>0</code> on error. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g84cf0c3ff01251c852c71624e64df9fe"></a><!-- doxytag: member="yaml.h::yaml_stream_end_event_initialize" ref="g84cf0c3ff01251c852c71624e64df9fe" args="(yaml_event_t *event)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int yaml_stream_end_event_initialize           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__event__s.html">yaml_event_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>event</em>          </td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create the STREAM-END event. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>event</em>&nbsp;</td><td>An empty event object.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><code>1</code> if the function succeeded, <code>0</code> on error. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g527e89302e1c969fbea5aa45664bf51c"></a><!-- doxytag: member="yaml.h::yaml_document_start_event_initialize" ref="g527e89302e1c969fbea5aa45664bf51c" args="(yaml_event_t *event, yaml_version_directive_t *version_directive, yaml_tag_directive_t *tag_directives_start, yaml_tag_directive_t *tag_directives_end, int implicit)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int yaml_document_start_event_initialize           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__event__s.html">yaml_event_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>event</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structyaml__version__directive__s.html">yaml_version_directive_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>version_directive</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>tag_directives_start</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>tag_directives_end</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>implicit</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create the DOCUMENT-START event. 
-<p>
-The <em>implicit</em> argument is considered as a stylistic parameter and may be ignored by the emitter.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>event</em>&nbsp;</td><td>An empty event object. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>version_directive</em>&nbsp;</td><td>The YAML directive value or <code>NULL</code>. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>tag_directives_start</em>&nbsp;</td><td>The beginning of the TAG directives list. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>tag_directives_end</em>&nbsp;</td><td>The end of the TAG directives list. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>implicit</em>&nbsp;</td><td>If the document start indicator is implicit.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><code>1</code> if the function succeeded, <code>0</code> on error. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g8bae16548ee88f8a5ca15204f8c30344"></a><!-- doxytag: member="yaml.h::yaml_document_end_event_initialize" ref="g8bae16548ee88f8a5ca15204f8c30344" args="(yaml_event_t *event, int implicit)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int yaml_document_end_event_initialize           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__event__s.html">yaml_event_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>event</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>implicit</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create the DOCUMENT-END event. 
-<p>
-The <em>implicit</em> argument is considered as a stylistic parameter and may be ignored by the emitter.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>event</em>&nbsp;</td><td>An empty event object. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>implicit</em>&nbsp;</td><td>If the document end indicator is implicit.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><code>1</code> if the function succeeded, <code>0</code> on error. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="gde4c15b75eb9a8035e04d4f0dd23f005"></a><!-- doxytag: member="yaml.h::yaml_alias_event_initialize" ref="gde4c15b75eb9a8035e04d4f0dd23f005" args="(yaml_event_t *event, yaml_char_t *anchor)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int yaml_alias_event_initialize           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__event__s.html">yaml_event_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>event</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>anchor</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create an ALIAS event. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>event</em>&nbsp;</td><td>An empty event object. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>anchor</em>&nbsp;</td><td>The anchor value.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><code>1</code> if the function succeeded, <code>0</code> on error. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="gfc60a1a437385e19e6fb3be075958c8c"></a><!-- doxytag: member="yaml.h::yaml_scalar_event_initialize" ref="gfc60a1a437385e19e6fb3be075958c8c" args="(yaml_event_t *event, yaml_char_t *anchor, yaml_char_t *tag, yaml_char_t *value, int length, int plain_implicit, int quoted_implicit, yaml_scalar_style_t style)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int yaml_scalar_event_initialize           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__event__s.html">yaml_event_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>event</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>anchor</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>tag</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>value</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>length</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>plain_implicit</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>quoted_implicit</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__styles.html#g3fa6405631e1afe5bd5c488a6c5e8065">yaml_scalar_style_t</a>&nbsp;</td>
-          <td class="paramname"> <em>style</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create a SCALAR event. 
-<p>
-The <em>style</em> argument may be ignored by the emitter.<p>
-Either the <em>tag</em> attribute or one of the <em>plain_implicit</em> and <em>quoted_implicit</em> flags must be set.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>event</em>&nbsp;</td><td>An empty event object. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>anchor</em>&nbsp;</td><td>The scalar anchor or <code>NULL</code>. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>tag</em>&nbsp;</td><td>The scalar tag or <code>NULL</code>. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>value</em>&nbsp;</td><td>The scalar value. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>length</em>&nbsp;</td><td>The length of the scalar value. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>plain_implicit</em>&nbsp;</td><td>If the tag may be omitted for the plain style. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>quoted_implicit</em>&nbsp;</td><td>If the tag may be omitted for any non-plain style. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>style</em>&nbsp;</td><td>The scalar style.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><code>1</code> if the function succeeded, <code>0</code> on error. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g53aea428c768d7b131923d08c904b4eb"></a><!-- doxytag: member="yaml.h::yaml_sequence_start_event_initialize" ref="g53aea428c768d7b131923d08c904b4eb" args="(yaml_event_t *event, yaml_char_t *anchor, yaml_char_t *tag, int implicit, yaml_sequence_style_t style)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int yaml_sequence_start_event_initialize           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__event__s.html">yaml_event_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>event</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>anchor</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>tag</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>implicit</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__styles.html#g58a1123d271e56c72de6abf852ac4dc2">yaml_sequence_style_t</a>&nbsp;</td>
-          <td class="paramname"> <em>style</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create a SEQUENCE-START event. 
-<p>
-The <em>style</em> argument may be ignored by the emitter.<p>
-Either the <em>tag</em> attribute or the <em>implicit</em> flag must be set.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>event</em>&nbsp;</td><td>An empty event object. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>anchor</em>&nbsp;</td><td>The sequence anchor or <code>NULL</code>. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>tag</em>&nbsp;</td><td>The sequence tag or <code>NULL</code>. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>implicit</em>&nbsp;</td><td>If the tag may be omitted. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>style</em>&nbsp;</td><td>The sequence style.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><code>1</code> if the function succeeded, <code>0</code> on error. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g99fdfa4b9d42b64d8171c9b22f334b1c"></a><!-- doxytag: member="yaml.h::yaml_sequence_end_event_initialize" ref="g99fdfa4b9d42b64d8171c9b22f334b1c" args="(yaml_event_t *event)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int yaml_sequence_end_event_initialize           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__event__s.html">yaml_event_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>event</em>          </td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create a SEQUENCE-END event. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>event</em>&nbsp;</td><td>An empty event object.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><code>1</code> if the function succeeded, <code>0</code> on error. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g0603cf8d20f0b6dfc3be04b6360134aa"></a><!-- doxytag: member="yaml.h::yaml_mapping_start_event_initialize" ref="g0603cf8d20f0b6dfc3be04b6360134aa" args="(yaml_event_t *event, yaml_char_t *anchor, yaml_char_t *tag, int implicit, yaml_mapping_style_t style)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int yaml_mapping_start_event_initialize           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__event__s.html">yaml_event_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>event</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>anchor</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>tag</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>implicit</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__styles.html#gb47523846a5c5960e07367a28ea9750a">yaml_mapping_style_t</a>&nbsp;</td>
-          <td class="paramname"> <em>style</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create a MAPPING-START event. 
-<p>
-The <em>style</em> argument may be ignored by the emitter.<p>
-Either the <em>tag</em> attribute or the <em>implicit</em> flag must be set.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>event</em>&nbsp;</td><td>An empty event object. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>anchor</em>&nbsp;</td><td>The mapping anchor or <code>NULL</code>. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>tag</em>&nbsp;</td><td>The mapping tag or <code>NULL</code>. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>implicit</em>&nbsp;</td><td>If the tag may be omitted. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>style</em>&nbsp;</td><td>The mapping style.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><code>1</code> if the function succeeded, <code>0</code> on error. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g3afaf8b3aca2ec902a4e268f12adb0c2"></a><!-- doxytag: member="yaml.h::yaml_mapping_end_event_initialize" ref="g3afaf8b3aca2ec902a4e268f12adb0c2" args="(yaml_event_t *event)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int yaml_mapping_end_event_initialize           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__event__s.html">yaml_event_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>event</em>          </td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create a MAPPING-END event. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>event</em>&nbsp;</td><td>An empty event object.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><code>1</code> if the function succeeded, <code>0</code> on error. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g5330d62ef52856aa53188137cb93a6a1"></a><!-- doxytag: member="yaml.h::yaml_event_delete" ref="g5330d62ef52856aa53188137cb93a6a1" args="(yaml_event_t *event)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void yaml_event_delete           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__event__s.html">yaml_event_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>event</em>          </td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Free any memory allocated for an event object. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>event</em>&nbsp;</td><td>An event object. </td></tr>
-  </table>
-</dl>
-
-</div>
-</div><p>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/group__export.html b/yaml-0.1.3/doc/html/group__export.html
deleted file mode 100644
index 8f8b95e..0000000
--- a/yaml-0.1.3/doc/html/group__export.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Export Definitions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>Export Definitions</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__export.html#g0791fd3e1d85ed53711b1feaae131f93">YAML_DECLARE</a>(type)&nbsp;&nbsp;&nbsp;type</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The public API declaration.  <a href="#g0791fd3e1d85ed53711b1feaae131f93"></a><br></td></tr>
-</table>
-<hr><h2>Define Documentation</h2>
-<a class="anchor" name="g0791fd3e1d85ed53711b1feaae131f93"></a><!-- doxytag: member="yaml.h::YAML_DECLARE" ref="g0791fd3e1d85ed53711b1feaae131f93" args="(type)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define YAML_DECLARE          </td>
-          <td>(</td>
-          <td class="paramtype">type&nbsp;</td>
-          <td class="paramname">          </td>
-          <td>&nbsp;)&nbsp;</td>
-          <td>&nbsp;&nbsp;&nbsp;type</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The public API declaration. 
-<p>
-
-</div>
-</div><p>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/group__nodes.html b/yaml-0.1.3/doc/html/group__nodes.html
deleted file mode 100644
index f84292b..0000000
--- a/yaml-0.1.3/doc/html/group__nodes.html
+++ /dev/null
@@ -1,853 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Nodes</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>Nodes</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__node__pair__s.html">yaml_node_pair_s</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An element of a mapping node.  <a href="structyaml__node__pair__s.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__node__s.html">yaml_node_s</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The node structure.  <a href="structyaml__node__s.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__document__s.html">yaml_document_s</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The document structure.  <a href="structyaml__document__s.html#_details">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#gdfa882b6e42a3a993d12392d55260b00">YAML_NULL_TAG</a>&nbsp;&nbsp;&nbsp;&quot;tag:yaml.org,2002:null&quot;</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag <code>!!null</code> with the only possible value: <code>null</code>.  <a href="#gdfa882b6e42a3a993d12392d55260b00"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g312629a1f51e91b136352db988d4d771">YAML_BOOL_TAG</a>&nbsp;&nbsp;&nbsp;&quot;tag:yaml.org,2002:bool&quot;</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag <code>!!bool</code> with the values: <code>true</code> and <code>falce</code>.  <a href="#g312629a1f51e91b136352db988d4d771"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#gc5dbc6d1f556663edf8db88d6113e931">YAML_STR_TAG</a>&nbsp;&nbsp;&nbsp;&quot;tag:yaml.org,2002:str&quot;</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag <code>!!str</code> for string values.  <a href="#gc5dbc6d1f556663edf8db88d6113e931"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g83263cdb4ffa6ad2f7d9a87281979ff5">YAML_INT_TAG</a>&nbsp;&nbsp;&nbsp;&quot;tag:yaml.org,2002:int&quot;</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag <code>!!int</code> for integer values.  <a href="#g83263cdb4ffa6ad2f7d9a87281979ff5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g6ab2ec71fc47cb24f1003b9acdb92843">YAML_FLOAT_TAG</a>&nbsp;&nbsp;&nbsp;&quot;tag:yaml.org,2002:float&quot;</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag <code>!!float</code> for float values.  <a href="#g6ab2ec71fc47cb24f1003b9acdb92843"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g3e27cca7191234f2e8c95eaf3bc99a73">YAML_TIMESTAMP_TAG</a>&nbsp;&nbsp;&nbsp;&quot;tag:yaml.org,2002:timestamp&quot;</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag <code>!!timestamp</code> for date and time values.  <a href="#g3e27cca7191234f2e8c95eaf3bc99a73"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#ga8284b30f9c9e3f10f6a69c9b882f417">YAML_SEQ_TAG</a>&nbsp;&nbsp;&nbsp;&quot;tag:yaml.org,2002:seq&quot;</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag <code>!!seq</code> is used to denote sequences.  <a href="#ga8284b30f9c9e3f10f6a69c9b882f417"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g22ae99cf3ac014dd76873268fd068c12">YAML_MAP_TAG</a>&nbsp;&nbsp;&nbsp;&quot;tag:yaml.org,2002:map&quot;</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag <code>!!map</code> is used to denote mapping.  <a href="#g22ae99cf3ac014dd76873268fd068c12"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#gf6b0c4e819b8f6915515a4f70065aaaa">YAML_DEFAULT_SCALAR_TAG</a>&nbsp;&nbsp;&nbsp;YAML_STR_TAG</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The default scalar tag is <code>!!str</code>.  <a href="#gf6b0c4e819b8f6915515a4f70065aaaa"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#gf195b67002518702e27746d6b4da6124">YAML_DEFAULT_SEQUENCE_TAG</a>&nbsp;&nbsp;&nbsp;YAML_SEQ_TAG</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The default sequence tag is <code>!!seq</code>.  <a href="#gf195b67002518702e27746d6b4da6124"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#gf7b1f8f0ce5665794510cd3841802a5f">YAML_DEFAULT_MAPPING_TAG</a>&nbsp;&nbsp;&nbsp;YAML_MAP_TAG</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The default mapping tag is <code>!!map</code>.  <a href="#gf7b1f8f0ce5665794510cd3841802a5f"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group__nodes.html#g0897d4b6bdd1b56c7a5fa0ff17b4f798">yaml_node_type_e</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#gbe020d2fc42d3e896549e9f97da622d2">yaml_node_type_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Node types.  <a href="#gbe020d2fc42d3e896549e9f97da622d2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structyaml__node__s.html">yaml_node_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g9eaaa233b120b9d9db47de93c294c40f">yaml_node_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The forward definition of a document node structure.  <a href="#g9eaaa233b120b9d9db47de93c294c40f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g7cc3581582e778b00c04e99cd3656860">yaml_node_item_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An element of a sequence node.  <a href="#g7cc3581582e778b00c04e99cd3656860"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structyaml__node__pair__s.html">yaml_node_pair_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g90f1c8b83c5c38dc4016afc1cc2050c4">yaml_node_pair_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An element of a mapping node.  <a href="#g90f1c8b83c5c38dc4016afc1cc2050c4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structyaml__document__s.html">yaml_document_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#gd94e064e95baeb22e4f7acc7804e8479">yaml_document_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The document structure.  <a href="#gd94e064e95baeb22e4f7acc7804e8479"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g0897d4b6bdd1b56c7a5fa0ff17b4f798">yaml_node_type_e</a> { <br>
-&nbsp;&nbsp;<a class="el" href="group__nodes.html#gg0897d4b6bdd1b56c7a5fa0ff17b4f7980fa87c0e89c4d4136cb47165e6917739">YAML_NO_NODE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__nodes.html#gg0897d4b6bdd1b56c7a5fa0ff17b4f798413ec8ce6b728c9ace703d194b370a45">YAML_SCALAR_NODE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__nodes.html#gg0897d4b6bdd1b56c7a5fa0ff17b4f7986c03b52f7ee737982eac5e4001faac15">YAML_SEQUENCE_NODE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__nodes.html#gg0897d4b6bdd1b56c7a5fa0ff17b4f798c1a08580e3a70973583fc85e3e097ee6">YAML_MAPPING_NODE</a>
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Node types.  <a href="group__nodes.html#g0897d4b6bdd1b56c7a5fa0ff17b4f798">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g62a485c96f3b7962436a0da5e6f3cc89">yaml_document_initialize</a> (<a class="el" href="structyaml__document__s.html">yaml_document_t</a> *document, <a class="el" href="structyaml__version__directive__s.html">yaml_version_directive_t</a> *version_directive, <a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *tag_directives_start, <a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *tag_directives_end, int start_implicit, int end_implicit)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a YAML document.  <a href="#g62a485c96f3b7962436a0da5e6f3cc89"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g2754b1544fb4e110e83fafbc708b0672">yaml_document_delete</a> (<a class="el" href="structyaml__document__s.html">yaml_document_t</a> *document)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Delete a YAML document and all its nodes.  <a href="#g2754b1544fb4e110e83fafbc708b0672"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__node__s.html">yaml_node_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#gfa1feabc9747dbded4dca24e27d3c21a">yaml_document_get_node</a> (<a class="el" href="structyaml__document__s.html">yaml_document_t</a> *document, int index)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a node of a YAML document.  <a href="#gfa1feabc9747dbded4dca24e27d3c21a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__node__s.html">yaml_node_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g40eeaa68fb2f3be34c4fe34e7597d324">yaml_document_get_root_node</a> (<a class="el" href="structyaml__document__s.html">yaml_document_t</a> *document)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the root of a YAML document node.  <a href="#g40eeaa68fb2f3be34c4fe34e7597d324"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g45dab8b983b58a005557d4b01f5057b0">yaml_document_add_scalar</a> (<a class="el" href="structyaml__document__s.html">yaml_document_t</a> *document, <a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *tag, <a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *value, int length, <a class="el" href="group__styles.html#g3fa6405631e1afe5bd5c488a6c5e8065">yaml_scalar_style_t</a> style)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a SCALAR node and attach it to the document.  <a href="#g45dab8b983b58a005557d4b01f5057b0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g83b2f7fdd9a439397a42016bddad7786">yaml_document_add_sequence</a> (<a class="el" href="structyaml__document__s.html">yaml_document_t</a> *document, <a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *tag, <a class="el" href="group__styles.html#g58a1123d271e56c72de6abf852ac4dc2">yaml_sequence_style_t</a> style)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a SEQUENCE node and attach it to the document.  <a href="#g83b2f7fdd9a439397a42016bddad7786"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g45a9f8288704f99cd81dc5cb31329d34">yaml_document_add_mapping</a> (<a class="el" href="structyaml__document__s.html">yaml_document_t</a> *document, <a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *tag, <a class="el" href="group__styles.html#gb47523846a5c5960e07367a28ea9750a">yaml_mapping_style_t</a> style)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a MAPPING node and attach it to the document.  <a href="#g45a9f8288704f99cd81dc5cb31329d34"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g16435917cd6c0261cd390fa8cf173b1b">yaml_document_append_sequence_item</a> (<a class="el" href="structyaml__document__s.html">yaml_document_t</a> *document, int sequence, int item)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add an item to a SEQUENCE node.  <a href="#g16435917cd6c0261cd390fa8cf173b1b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g2db27002d8a9ae06b1729d0ee06553d2">yaml_document_append_mapping_pair</a> (<a class="el" href="structyaml__document__s.html">yaml_document_t</a> *document, int mapping, int key, int value)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a pair of a key and a value to a MAPPING node.  <a href="#g2db27002d8a9ae06b1729d0ee06553d2"></a><br></td></tr>
-</table>
-<hr><h2>Define Documentation</h2>
-<a class="anchor" name="gdfa882b6e42a3a993d12392d55260b00"></a><!-- doxytag: member="yaml.h::YAML_NULL_TAG" ref="gdfa882b6e42a3a993d12392d55260b00" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define YAML_NULL_TAG&nbsp;&nbsp;&nbsp;&quot;tag:yaml.org,2002:null&quot;          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The tag <code>!!null</code> with the only possible value: <code>null</code>. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="g312629a1f51e91b136352db988d4d771"></a><!-- doxytag: member="yaml.h::YAML_BOOL_TAG" ref="g312629a1f51e91b136352db988d4d771" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define YAML_BOOL_TAG&nbsp;&nbsp;&nbsp;&quot;tag:yaml.org,2002:bool&quot;          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The tag <code>!!bool</code> with the values: <code>true</code> and <code>falce</code>. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="gc5dbc6d1f556663edf8db88d6113e931"></a><!-- doxytag: member="yaml.h::YAML_STR_TAG" ref="gc5dbc6d1f556663edf8db88d6113e931" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define YAML_STR_TAG&nbsp;&nbsp;&nbsp;&quot;tag:yaml.org,2002:str&quot;          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The tag <code>!!str</code> for string values. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="g83263cdb4ffa6ad2f7d9a87281979ff5"></a><!-- doxytag: member="yaml.h::YAML_INT_TAG" ref="g83263cdb4ffa6ad2f7d9a87281979ff5" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define YAML_INT_TAG&nbsp;&nbsp;&nbsp;&quot;tag:yaml.org,2002:int&quot;          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The tag <code>!!int</code> for integer values. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="g6ab2ec71fc47cb24f1003b9acdb92843"></a><!-- doxytag: member="yaml.h::YAML_FLOAT_TAG" ref="g6ab2ec71fc47cb24f1003b9acdb92843" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define YAML_FLOAT_TAG&nbsp;&nbsp;&nbsp;&quot;tag:yaml.org,2002:float&quot;          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The tag <code>!!float</code> for float values. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="g3e27cca7191234f2e8c95eaf3bc99a73"></a><!-- doxytag: member="yaml.h::YAML_TIMESTAMP_TAG" ref="g3e27cca7191234f2e8c95eaf3bc99a73" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define YAML_TIMESTAMP_TAG&nbsp;&nbsp;&nbsp;&quot;tag:yaml.org,2002:timestamp&quot;          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The tag <code>!!timestamp</code> for date and time values. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="ga8284b30f9c9e3f10f6a69c9b882f417"></a><!-- doxytag: member="yaml.h::YAML_SEQ_TAG" ref="ga8284b30f9c9e3f10f6a69c9b882f417" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define YAML_SEQ_TAG&nbsp;&nbsp;&nbsp;&quot;tag:yaml.org,2002:seq&quot;          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The tag <code>!!seq</code> is used to denote sequences. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="g22ae99cf3ac014dd76873268fd068c12"></a><!-- doxytag: member="yaml.h::YAML_MAP_TAG" ref="g22ae99cf3ac014dd76873268fd068c12" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define YAML_MAP_TAG&nbsp;&nbsp;&nbsp;&quot;tag:yaml.org,2002:map&quot;          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The tag <code>!!map</code> is used to denote mapping. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="gf6b0c4e819b8f6915515a4f70065aaaa"></a><!-- doxytag: member="yaml.h::YAML_DEFAULT_SCALAR_TAG" ref="gf6b0c4e819b8f6915515a4f70065aaaa" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define YAML_DEFAULT_SCALAR_TAG&nbsp;&nbsp;&nbsp;YAML_STR_TAG          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The default scalar tag is <code>!!str</code>. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="gf195b67002518702e27746d6b4da6124"></a><!-- doxytag: member="yaml.h::YAML_DEFAULT_SEQUENCE_TAG" ref="gf195b67002518702e27746d6b4da6124" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define YAML_DEFAULT_SEQUENCE_TAG&nbsp;&nbsp;&nbsp;YAML_SEQ_TAG          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The default sequence tag is <code>!!seq</code>. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="gf7b1f8f0ce5665794510cd3841802a5f"></a><!-- doxytag: member="yaml.h::YAML_DEFAULT_MAPPING_TAG" ref="gf7b1f8f0ce5665794510cd3841802a5f" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define YAML_DEFAULT_MAPPING_TAG&nbsp;&nbsp;&nbsp;YAML_MAP_TAG          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The default mapping tag is <code>!!map</code>. 
-<p>
-
-</div>
-</div><p>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="gbe020d2fc42d3e896549e9f97da622d2"></a><!-- doxytag: member="yaml.h::yaml_node_type_t" ref="gbe020d2fc42d3e896549e9f97da622d2" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef enum <a class="el" href="group__nodes.html#g0897d4b6bdd1b56c7a5fa0ff17b4f798">yaml_node_type_e</a>  <a class="el" href="group__nodes.html#gbe020d2fc42d3e896549e9f97da622d2">yaml_node_type_t</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Node types. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="g9eaaa233b120b9d9db47de93c294c40f"></a><!-- doxytag: member="yaml.h::yaml_node_t" ref="g9eaaa233b120b9d9db47de93c294c40f" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef struct <a class="el" href="structyaml__node__s.html">yaml_node_s</a> <a class="el" href="structyaml__node__s.html">yaml_node_t</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The forward definition of a document node structure. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="g7cc3581582e778b00c04e99cd3656860"></a><!-- doxytag: member="yaml.h::yaml_node_item_t" ref="g7cc3581582e778b00c04e99cd3656860" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef int <a class="el" href="group__nodes.html#g7cc3581582e778b00c04e99cd3656860">yaml_node_item_t</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-An element of a sequence node. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="g90f1c8b83c5c38dc4016afc1cc2050c4"></a><!-- doxytag: member="yaml.h::yaml_node_pair_t" ref="g90f1c8b83c5c38dc4016afc1cc2050c4" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef struct <a class="el" href="structyaml__node__pair__s.html">yaml_node_pair_s</a>  <a class="el" href="structyaml__node__pair__s.html">yaml_node_pair_t</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-An element of a mapping node. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="gd94e064e95baeb22e4f7acc7804e8479"></a><!-- doxytag: member="yaml.h::yaml_document_t" ref="gd94e064e95baeb22e4f7acc7804e8479" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef struct <a class="el" href="structyaml__document__s.html">yaml_document_s</a>  <a class="el" href="structyaml__document__s.html">yaml_document_t</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The document structure. 
-<p>
-
-</div>
-</div><p>
-<hr><h2>Enumeration Type Documentation</h2>
-<a class="anchor" name="g0897d4b6bdd1b56c7a5fa0ff17b4f798"></a><!-- doxytag: member="yaml.h::yaml_node_type_e" ref="g0897d4b6bdd1b56c7a5fa0ff17b4f798" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">enum <a class="el" href="group__nodes.html#g0897d4b6bdd1b56c7a5fa0ff17b4f798">yaml_node_type_e</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Node types. 
-<p>
-<dl compact><dt><b>Enumerator: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="gg0897d4b6bdd1b56c7a5fa0ff17b4f7980fa87c0e89c4d4136cb47165e6917739"></a><!-- doxytag: member="YAML_NO_NODE" ref="gg0897d4b6bdd1b56c7a5fa0ff17b4f7980fa87c0e89c4d4136cb47165e6917739" args="" -->YAML_NO_NODE</em>&nbsp;</td><td>
-An empty node. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg0897d4b6bdd1b56c7a5fa0ff17b4f798413ec8ce6b728c9ace703d194b370a45"></a><!-- doxytag: member="YAML_SCALAR_NODE" ref="gg0897d4b6bdd1b56c7a5fa0ff17b4f798413ec8ce6b728c9ace703d194b370a45" args="" -->YAML_SCALAR_NODE</em>&nbsp;</td><td>
-A scalar node. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg0897d4b6bdd1b56c7a5fa0ff17b4f7986c03b52f7ee737982eac5e4001faac15"></a><!-- doxytag: member="YAML_SEQUENCE_NODE" ref="gg0897d4b6bdd1b56c7a5fa0ff17b4f7986c03b52f7ee737982eac5e4001faac15" args="" -->YAML_SEQUENCE_NODE</em>&nbsp;</td><td>
-A sequence node. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg0897d4b6bdd1b56c7a5fa0ff17b4f798c1a08580e3a70973583fc85e3e097ee6"></a><!-- doxytag: member="YAML_MAPPING_NODE" ref="gg0897d4b6bdd1b56c7a5fa0ff17b4f798c1a08580e3a70973583fc85e3e097ee6" args="" -->YAML_MAPPING_NODE</em>&nbsp;</td><td>
-A mapping node. 
-<p>
-</td></tr>
-</table>
-</dl>
-
-</div>
-</div><p>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="g62a485c96f3b7962436a0da5e6f3cc89"></a><!-- doxytag: member="yaml.h::yaml_document_initialize" ref="g62a485c96f3b7962436a0da5e6f3cc89" args="(yaml_document_t *document, yaml_version_directive_t *version_directive, yaml_tag_directive_t *tag_directives_start, yaml_tag_directive_t *tag_directives_end, int start_implicit, int end_implicit)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int yaml_document_initialize           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__document__s.html">yaml_document_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>document</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structyaml__version__directive__s.html">yaml_version_directive_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>version_directive</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>tag_directives_start</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>tag_directives_end</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>start_implicit</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>end_implicit</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create a YAML document. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>document</em>&nbsp;</td><td>An empty document object. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>version_directive</em>&nbsp;</td><td>The YAML directive value or <code>NULL</code>. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>tag_directives_start</em>&nbsp;</td><td>The beginning of the TAG directives list. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>tag_directives_end</em>&nbsp;</td><td>The end of the TAG directives list. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>start_implicit</em>&nbsp;</td><td>If the document start indicator is implicit. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>end_implicit</em>&nbsp;</td><td>If the document end indicator is implicit.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><code>1</code> if the function succeeded, <code>0</code> on error. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g2754b1544fb4e110e83fafbc708b0672"></a><!-- doxytag: member="yaml.h::yaml_document_delete" ref="g2754b1544fb4e110e83fafbc708b0672" args="(yaml_document_t *document)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void yaml_document_delete           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__document__s.html">yaml_document_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>document</em>          </td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Delete a YAML document and all its nodes. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>document</em>&nbsp;</td><td>A document object. </td></tr>
-  </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="gfa1feabc9747dbded4dca24e27d3c21a"></a><!-- doxytag: member="yaml.h::yaml_document_get_node" ref="gfa1feabc9747dbded4dca24e27d3c21a" args="(yaml_document_t *document, int index)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__node__s.html">yaml_node_t</a>* yaml_document_get_node           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__document__s.html">yaml_document_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>document</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>index</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get a node of a YAML document. 
-<p>
-The pointer returned by this function is valid until any of the functions modifying the documents are called.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>document</em>&nbsp;</td><td>A document object. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>index</em>&nbsp;</td><td>The node id.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>the node objct or <code>NULL</code> if <code>node_id</code> is out of range. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g40eeaa68fb2f3be34c4fe34e7597d324"></a><!-- doxytag: member="yaml.h::yaml_document_get_root_node" ref="g40eeaa68fb2f3be34c4fe34e7597d324" args="(yaml_document_t *document)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__node__s.html">yaml_node_t</a>* yaml_document_get_root_node           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__document__s.html">yaml_document_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>document</em>          </td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the root of a YAML document node. 
-<p>
-The root object is the first object added to the document.<p>
-The pointer returned by this function is valid until any of the functions modifying the documents are called.<p>
-An empty document produced by the parser signifies the end of a YAML stream.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>document</em>&nbsp;</td><td>A document object.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>the node object or <code>NULL</code> if the document is empty. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g45dab8b983b58a005557d4b01f5057b0"></a><!-- doxytag: member="yaml.h::yaml_document_add_scalar" ref="g45dab8b983b58a005557d4b01f5057b0" args="(yaml_document_t *document, yaml_char_t *tag, yaml_char_t *value, int length, yaml_scalar_style_t style)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int yaml_document_add_scalar           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__document__s.html">yaml_document_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>document</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>tag</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>value</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>length</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__styles.html#g3fa6405631e1afe5bd5c488a6c5e8065">yaml_scalar_style_t</a>&nbsp;</td>
-          <td class="paramname"> <em>style</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create a SCALAR node and attach it to the document. 
-<p>
-The <em>style</em> argument may be ignored by the emitter.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>document</em>&nbsp;</td><td>A document object. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>tag</em>&nbsp;</td><td>The scalar tag. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>value</em>&nbsp;</td><td>The scalar value. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>length</em>&nbsp;</td><td>The length of the scalar value. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>style</em>&nbsp;</td><td>The scalar style.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>the node id or <code>0</code> on error. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g83b2f7fdd9a439397a42016bddad7786"></a><!-- doxytag: member="yaml.h::yaml_document_add_sequence" ref="g83b2f7fdd9a439397a42016bddad7786" args="(yaml_document_t *document, yaml_char_t *tag, yaml_sequence_style_t style)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int yaml_document_add_sequence           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__document__s.html">yaml_document_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>document</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>tag</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__styles.html#g58a1123d271e56c72de6abf852ac4dc2">yaml_sequence_style_t</a>&nbsp;</td>
-          <td class="paramname"> <em>style</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create a SEQUENCE node and attach it to the document. 
-<p>
-The <em>style</em> argument may be ignored by the emitter.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>document</em>&nbsp;</td><td>A document object. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>tag</em>&nbsp;</td><td>The sequence tag. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>style</em>&nbsp;</td><td>The sequence style.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>the node id or <code>0</code> on error. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g45a9f8288704f99cd81dc5cb31329d34"></a><!-- doxytag: member="yaml.h::yaml_document_add_mapping" ref="g45a9f8288704f99cd81dc5cb31329d34" args="(yaml_document_t *document, yaml_char_t *tag, yaml_mapping_style_t style)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int yaml_document_add_mapping           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__document__s.html">yaml_document_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>document</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>tag</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__styles.html#gb47523846a5c5960e07367a28ea9750a">yaml_mapping_style_t</a>&nbsp;</td>
-          <td class="paramname"> <em>style</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create a MAPPING node and attach it to the document. 
-<p>
-The <em>style</em> argument may be ignored by the emitter.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>document</em>&nbsp;</td><td>A document object. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>tag</em>&nbsp;</td><td>The sequence tag. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>style</em>&nbsp;</td><td>The sequence style.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>the node id or <code>0</code> on error. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g16435917cd6c0261cd390fa8cf173b1b"></a><!-- doxytag: member="yaml.h::yaml_document_append_sequence_item" ref="g16435917cd6c0261cd390fa8cf173b1b" args="(yaml_document_t *document, int sequence, int item)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int yaml_document_append_sequence_item           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__document__s.html">yaml_document_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>document</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>sequence</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>item</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Add an item to a SEQUENCE node. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>document</em>&nbsp;</td><td>A document object. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>sequence</em>&nbsp;</td><td>The sequence node id. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>item</em>&nbsp;</td><td>The item node id.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><code>1</code> if the function succeeded, <code>0</code> on error. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g2db27002d8a9ae06b1729d0ee06553d2"></a><!-- doxytag: member="yaml.h::yaml_document_append_mapping_pair" ref="g2db27002d8a9ae06b1729d0ee06553d2" args="(yaml_document_t *document, int mapping, int key, int value)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int yaml_document_append_mapping_pair           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__document__s.html">yaml_document_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>document</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>mapping</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>key</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&nbsp;</td>
-          <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Add a pair of a key and a value to a MAPPING node. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>document</em>&nbsp;</td><td>A document object. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>mapping</em>&nbsp;</td><td>The mapping node id. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>key</em>&nbsp;</td><td>The key node id. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>value</em>&nbsp;</td><td>The value node id.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><code>1</code> if the function succeeded, <code>0</code> on error. </dd></dl>
-
-</div>
-</div><p>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/group__parser.html b/yaml-0.1.3/doc/html/group__parser.html
deleted file mode 100644
index e5e197d..0000000
--- a/yaml-0.1.3/doc/html/group__parser.html
+++ /dev/null
@@ -1,645 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Parser Definitions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>Parser Definitions</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__simple__key__s.html">yaml_simple_key_s</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This structure holds information about a potential simple key.  <a href="structyaml__simple__key__s.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__alias__data__s.html">yaml_alias_data_s</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This structure holds aliases data.  <a href="structyaml__alias__data__s.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html">yaml_parser_s</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The parser structure.  <a href="structyaml__parser__s.html#_details">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#g4982f7e4e001ddb47d2819f38f0cd9d6">yaml_read_handler_t</a> (void *data, unsigned char *buffer, size_t size, size_t *size_read)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The prototype of a read handler.  <a href="#g4982f7e4e001ddb47d2819f38f0cd9d6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ge5570fbb7ab7c8332cd666f3a9c26591"></a><!-- doxytag: member="parser::yaml_simple_key_t" ref="ge5570fbb7ab7c8332cd666f3a9c26591" args="" -->
-typedef struct <a class="el" href="structyaml__simple__key__s.html">yaml_simple_key_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#ge5570fbb7ab7c8332cd666f3a9c26591">yaml_simple_key_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This structure holds information about a potential simple key. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g52b56d3e3cee0f9ba460978802a8c83b"></a><!-- doxytag: member="parser::yaml_parser_state_t" ref="g52b56d3e3cee0f9ba460978802a8c83b" args="" -->
-typedef enum <a class="el" href="group__parser.html#gd39c19e7b0df6f542ca97806535b57c5">yaml_parser_state_e</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#g52b56d3e3cee0f9ba460978802a8c83b">yaml_parser_state_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The states of the parser. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g1434228b82f5f90d3c8ccda816e9ca9d"></a><!-- doxytag: member="parser::yaml_alias_data_t" ref="g1434228b82f5f90d3c8ccda816e9ca9d" args="" -->
-typedef struct <a class="el" href="structyaml__alias__data__s.html">yaml_alias_data_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#g1434228b82f5f90d3c8ccda816e9ca9d">yaml_alias_data_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This structure holds aliases data. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structyaml__parser__s.html">yaml_parser_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#gfdc6319cb28a8b8034542b29be85b0c4">yaml_parser_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The parser structure.  <a href="#gfdc6319cb28a8b8034542b29be85b0c4"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#gd39c19e7b0df6f542ca97806535b57c5">yaml_parser_state_e</a> { <br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5e7b52e16bf002db5cf2944596d8c880e">YAML_PARSE_STREAM_START_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c58255725d67d5bd3574fc7df4db1c6c84">YAML_PARSE_IMPLICIT_DOCUMENT_START_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5a06d10f700d245caecfc6074a6c52fde">YAML_PARSE_DOCUMENT_START_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5e444c7652c8029b0ef80068eaaaa3d4d">YAML_PARSE_DOCUMENT_CONTENT_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5eef06d7f13fa4501146a5b9876c98239">YAML_PARSE_DOCUMENT_END_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5e1893c0835bacf05cdc21ed181fb75f1">YAML_PARSE_BLOCK_NODE_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5cbd390af0d3919fe0382d03c284ff3b5">YAML_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c55bb321f9d18c5b208a71c04bbcbd1d01">YAML_PARSE_FLOW_NODE_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c55bb5f95fc5f1a258ee8e9db0ed25b2d9">YAML_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c58a6cb1f12fe08eee7fc2fa854dbd5b1a">YAML_PARSE_BLOCK_SEQUENCE_ENTRY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5f7095f2141cf9887489e832f0ec61fbd">YAML_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5febcb5bbd67d112d9ecfa633155f0644">YAML_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c52df81c86e90b874b415ecb19e72efe45">YAML_PARSE_BLOCK_MAPPING_KEY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5e94acf5685fa1538b225413f154465c2">YAML_PARSE_BLOCK_MAPPING_VALUE_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c53f54830989c12cc4a63494df792eeb08">YAML_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c50e50f3841eb0d37ad159e64c4a9a1171">YAML_PARSE_FLOW_SEQUENCE_ENTRY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5563e11601cf3a1d2a3efc1feb1b696a3">YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c59e5ebb4bee4541e7a7025689c7fc66eb">YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5397fd87de9227c64e5308481930b5eeb">YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c591ac4bbb6629e2b768a3305fb707b7cd">YAML_PARSE_FLOW_MAPPING_FIRST_KEY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5924f8eb891dc7527bf4db594a0b1bff8">YAML_PARSE_FLOW_MAPPING_KEY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c53ba351f6cfba029248ada2c0720246d4">YAML_PARSE_FLOW_MAPPING_VALUE_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c55a8ec0af5c3314c1ad5e0569b6a5d6d2">YAML_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c551fd3d45693e2240251996def375a2a2">YAML_PARSE_END_STATE</a>
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The states of the parser.  <a href="group__parser.html#gd39c19e7b0df6f542ca97806535b57c5">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#gcc37ceeb5847e38a3fe24eb0c9b53965">yaml_parser_initialize</a> (<a class="el" href="structyaml__parser__s.html">yaml_parser_t</a> *parser)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize a parser.  <a href="#gcc37ceeb5847e38a3fe24eb0c9b53965"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#ga27150107c4667c1024ec0651e2ac26b">yaml_parser_delete</a> (<a class="el" href="structyaml__parser__s.html">yaml_parser_t</a> *parser)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy a parser.  <a href="#ga27150107c4667c1024ec0651e2ac26b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#g08a94762bf5f4c61f72c1da0a407df0d">yaml_parser_set_input_string</a> (<a class="el" href="structyaml__parser__s.html">yaml_parser_t</a> *parser, const unsigned char *input, size_t size)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a string input.  <a href="#g08a94762bf5f4c61f72c1da0a407df0d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#gc3f00f8beb2365b1e4569692d64696b6">yaml_parser_set_input_file</a> (<a class="el" href="structyaml__parser__s.html">yaml_parser_t</a> *parser, FILE *file)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a file input.  <a href="#gc3f00f8beb2365b1e4569692d64696b6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#gbc67581bfa771a3e787d907d6914b8d9">yaml_parser_set_input</a> (<a class="el" href="structyaml__parser__s.html">yaml_parser_t</a> *parser, <a class="el" href="group__parser.html#g4982f7e4e001ddb47d2819f38f0cd9d6">yaml_read_handler_t</a> *handler, void *data)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a generic input handler.  <a href="#gbc67581bfa771a3e787d907d6914b8d9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#g9565b64975570ed34612a19adf02ae6a">yaml_parser_set_encoding</a> (<a class="el" href="structyaml__parser__s.html">yaml_parser_t</a> *parser, <a class="el" href="group__basic.html#g2170996d7e636397b5e6bc0c1b7df7c6">yaml_encoding_t</a> encoding)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the source encoding.  <a href="#g9565b64975570ed34612a19adf02ae6a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#g6c2144f131ebd600a075d4ba654540f7">yaml_parser_scan</a> (<a class="el" href="structyaml__parser__s.html">yaml_parser_t</a> *parser, <a class="el" href="structyaml__token__s.html">yaml_token_t</a> *token)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Scan the input stream and produce the next token.  <a href="#g6c2144f131ebd600a075d4ba654540f7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#g559312fb137533d8b7e07f224fe0ec8f">yaml_parser_parse</a> (<a class="el" href="structyaml__parser__s.html">yaml_parser_t</a> *parser, <a class="el" href="structyaml__event__s.html">yaml_event_t</a> *event)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parse the input stream and produce the next parsing event.  <a href="#g559312fb137533d8b7e07f224fe0ec8f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#g9ef7d6e9494766b5880c389bc431d138">yaml_parser_load</a> (<a class="el" href="structyaml__parser__s.html">yaml_parser_t</a> *parser, <a class="el" href="structyaml__document__s.html">yaml_document_t</a> *document)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parse the input stream and produce the next YAML document.  <a href="#g9ef7d6e9494766b5880c389bc431d138"></a><br></td></tr>
-</table>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="g4982f7e4e001ddb47d2819f38f0cd9d6"></a><!-- doxytag: member="yaml.h::yaml_read_handler_t" ref="g4982f7e4e001ddb47d2819f38f0cd9d6" args="(void *data, unsigned char *buffer, size_t size, size_t *size_read)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef int <a class="el" href="group__parser.html#g4982f7e4e001ddb47d2819f38f0cd9d6">yaml_read_handler_t</a>(void *data, unsigned char *buffer, size_t size, size_t *size_read)          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The prototype of a read handler. 
-<p>
-The read handler is called when the parser needs to read more bytes from the source. The handler should write not more than <em>size</em> bytes to the <em>buffer</em>. The number of written bytes should be set to the <em>length</em> variable.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>data</em>&nbsp;</td><td>A pointer to an application data specified by <a class="el" href="group__parser.html#gbc67581bfa771a3e787d907d6914b8d9" title="Set a generic input handler.">yaml_parser_set_input()</a>. </td></tr>
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>buffer</em>&nbsp;</td><td>The buffer to write the data from the source. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>size</em>&nbsp;</td><td>The size of the buffer. </td></tr>
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>size_read</em>&nbsp;</td><td>The actual number of bytes read from the source.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success, the handler should return <code>1</code>. If the handler failed, the returned value should be <code>0</code>. On EOF, the handler should set the <em>size_read</em> to <code>0</code> and return <code>1</code>. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="gfdc6319cb28a8b8034542b29be85b0c4"></a><!-- doxytag: member="yaml.h::yaml_parser_t" ref="gfdc6319cb28a8b8034542b29be85b0c4" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef struct <a class="el" href="structyaml__parser__s.html">yaml_parser_s</a>  <a class="el" href="structyaml__parser__s.html">yaml_parser_t</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The parser structure. 
-<p>
-All members are internal. Manage the structure using the <code>yaml_parser_</code> family of functions. 
-</div>
-</div><p>
-<hr><h2>Enumeration Type Documentation</h2>
-<a class="anchor" name="gd39c19e7b0df6f542ca97806535b57c5"></a><!-- doxytag: member="yaml.h::yaml_parser_state_e" ref="gd39c19e7b0df6f542ca97806535b57c5" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">enum <a class="el" href="group__parser.html#gd39c19e7b0df6f542ca97806535b57c5">yaml_parser_state_e</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The states of the parser. 
-<p>
-<dl compact><dt><b>Enumerator: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="ggd39c19e7b0df6f542ca97806535b57c5e7b52e16bf002db5cf2944596d8c880e"></a><!-- doxytag: member="YAML_PARSE_STREAM_START_STATE" ref="ggd39c19e7b0df6f542ca97806535b57c5e7b52e16bf002db5cf2944596d8c880e" args="" -->YAML_PARSE_STREAM_START_STATE</em>&nbsp;</td><td>
-Expect STREAM-START. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggd39c19e7b0df6f542ca97806535b57c58255725d67d5bd3574fc7df4db1c6c84"></a><!-- doxytag: member="YAML_PARSE_IMPLICIT_DOCUMENT_START_STATE" ref="ggd39c19e7b0df6f542ca97806535b57c58255725d67d5bd3574fc7df4db1c6c84" args="" -->YAML_PARSE_IMPLICIT_DOCUMENT_START_STATE</em>&nbsp;</td><td>
-Expect the beginning of an implicit document. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggd39c19e7b0df6f542ca97806535b57c5a06d10f700d245caecfc6074a6c52fde"></a><!-- doxytag: member="YAML_PARSE_DOCUMENT_START_STATE" ref="ggd39c19e7b0df6f542ca97806535b57c5a06d10f700d245caecfc6074a6c52fde" args="" -->YAML_PARSE_DOCUMENT_START_STATE</em>&nbsp;</td><td>
-Expect DOCUMENT-START. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggd39c19e7b0df6f542ca97806535b57c5e444c7652c8029b0ef80068eaaaa3d4d"></a><!-- doxytag: member="YAML_PARSE_DOCUMENT_CONTENT_STATE" ref="ggd39c19e7b0df6f542ca97806535b57c5e444c7652c8029b0ef80068eaaaa3d4d" args="" -->YAML_PARSE_DOCUMENT_CONTENT_STATE</em>&nbsp;</td><td>
-Expect the content of a document. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggd39c19e7b0df6f542ca97806535b57c5eef06d7f13fa4501146a5b9876c98239"></a><!-- doxytag: member="YAML_PARSE_DOCUMENT_END_STATE" ref="ggd39c19e7b0df6f542ca97806535b57c5eef06d7f13fa4501146a5b9876c98239" args="" -->YAML_PARSE_DOCUMENT_END_STATE</em>&nbsp;</td><td>
-Expect DOCUMENT-END. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggd39c19e7b0df6f542ca97806535b57c5e1893c0835bacf05cdc21ed181fb75f1"></a><!-- doxytag: member="YAML_PARSE_BLOCK_NODE_STATE" ref="ggd39c19e7b0df6f542ca97806535b57c5e1893c0835bacf05cdc21ed181fb75f1" args="" -->YAML_PARSE_BLOCK_NODE_STATE</em>&nbsp;</td><td>
-Expect a block node. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggd39c19e7b0df6f542ca97806535b57c5cbd390af0d3919fe0382d03c284ff3b5"></a><!-- doxytag: member="YAML_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE" ref="ggd39c19e7b0df6f542ca97806535b57c5cbd390af0d3919fe0382d03c284ff3b5" args="" -->YAML_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE</em>&nbsp;</td><td>
-Expect a block node or indentless sequence. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggd39c19e7b0df6f542ca97806535b57c55bb321f9d18c5b208a71c04bbcbd1d01"></a><!-- doxytag: member="YAML_PARSE_FLOW_NODE_STATE" ref="ggd39c19e7b0df6f542ca97806535b57c55bb321f9d18c5b208a71c04bbcbd1d01" args="" -->YAML_PARSE_FLOW_NODE_STATE</em>&nbsp;</td><td>
-Expect a flow node. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggd39c19e7b0df6f542ca97806535b57c55bb5f95fc5f1a258ee8e9db0ed25b2d9"></a><!-- doxytag: member="YAML_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE" ref="ggd39c19e7b0df6f542ca97806535b57c55bb5f95fc5f1a258ee8e9db0ed25b2d9" args="" -->YAML_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE</em>&nbsp;</td><td>
-Expect the first entry of a block sequence. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggd39c19e7b0df6f542ca97806535b57c58a6cb1f12fe08eee7fc2fa854dbd5b1a"></a><!-- doxytag: member="YAML_PARSE_BLOCK_SEQUENCE_ENTRY_STATE" ref="ggd39c19e7b0df6f542ca97806535b57c58a6cb1f12fe08eee7fc2fa854dbd5b1a" args="" -->YAML_PARSE_BLOCK_SEQUENCE_ENTRY_STATE</em>&nbsp;</td><td>
-Expect an entry of a block sequence. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggd39c19e7b0df6f542ca97806535b57c5f7095f2141cf9887489e832f0ec61fbd"></a><!-- doxytag: member="YAML_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE" ref="ggd39c19e7b0df6f542ca97806535b57c5f7095f2141cf9887489e832f0ec61fbd" args="" -->YAML_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE</em>&nbsp;</td><td>
-Expect an entry of an indentless sequence. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggd39c19e7b0df6f542ca97806535b57c5febcb5bbd67d112d9ecfa633155f0644"></a><!-- doxytag: member="YAML_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE" ref="ggd39c19e7b0df6f542ca97806535b57c5febcb5bbd67d112d9ecfa633155f0644" args="" -->YAML_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE</em>&nbsp;</td><td>
-Expect the first key of a block mapping. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggd39c19e7b0df6f542ca97806535b57c52df81c86e90b874b415ecb19e72efe45"></a><!-- doxytag: member="YAML_PARSE_BLOCK_MAPPING_KEY_STATE" ref="ggd39c19e7b0df6f542ca97806535b57c52df81c86e90b874b415ecb19e72efe45" args="" -->YAML_PARSE_BLOCK_MAPPING_KEY_STATE</em>&nbsp;</td><td>
-Expect a block mapping key. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggd39c19e7b0df6f542ca97806535b57c5e94acf5685fa1538b225413f154465c2"></a><!-- doxytag: member="YAML_PARSE_BLOCK_MAPPING_VALUE_STATE" ref="ggd39c19e7b0df6f542ca97806535b57c5e94acf5685fa1538b225413f154465c2" args="" -->YAML_PARSE_BLOCK_MAPPING_VALUE_STATE</em>&nbsp;</td><td>
-Expect a block mapping value. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggd39c19e7b0df6f542ca97806535b57c53f54830989c12cc4a63494df792eeb08"></a><!-- doxytag: member="YAML_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE" ref="ggd39c19e7b0df6f542ca97806535b57c53f54830989c12cc4a63494df792eeb08" args="" -->YAML_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE</em>&nbsp;</td><td>
-Expect the first entry of a flow sequence. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggd39c19e7b0df6f542ca97806535b57c50e50f3841eb0d37ad159e64c4a9a1171"></a><!-- doxytag: member="YAML_PARSE_FLOW_SEQUENCE_ENTRY_STATE" ref="ggd39c19e7b0df6f542ca97806535b57c50e50f3841eb0d37ad159e64c4a9a1171" args="" -->YAML_PARSE_FLOW_SEQUENCE_ENTRY_STATE</em>&nbsp;</td><td>
-Expect an entry of a flow sequence. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggd39c19e7b0df6f542ca97806535b57c5563e11601cf3a1d2a3efc1feb1b696a3"></a><!-- doxytag: member="YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE" ref="ggd39c19e7b0df6f542ca97806535b57c5563e11601cf3a1d2a3efc1feb1b696a3" args="" -->YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE</em>&nbsp;</td><td>
-Expect a key of an ordered mapping. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggd39c19e7b0df6f542ca97806535b57c59e5ebb4bee4541e7a7025689c7fc66eb"></a><!-- doxytag: member="YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE" ref="ggd39c19e7b0df6f542ca97806535b57c59e5ebb4bee4541e7a7025689c7fc66eb" args="" -->YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE</em>&nbsp;</td><td>
-Expect a value of an ordered mapping. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggd39c19e7b0df6f542ca97806535b57c5397fd87de9227c64e5308481930b5eeb"></a><!-- doxytag: member="YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE" ref="ggd39c19e7b0df6f542ca97806535b57c5397fd87de9227c64e5308481930b5eeb" args="" -->YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE</em>&nbsp;</td><td>
-Expect the and of an ordered mapping entry. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggd39c19e7b0df6f542ca97806535b57c591ac4bbb6629e2b768a3305fb707b7cd"></a><!-- doxytag: member="YAML_PARSE_FLOW_MAPPING_FIRST_KEY_STATE" ref="ggd39c19e7b0df6f542ca97806535b57c591ac4bbb6629e2b768a3305fb707b7cd" args="" -->YAML_PARSE_FLOW_MAPPING_FIRST_KEY_STATE</em>&nbsp;</td><td>
-Expect the first key of a flow mapping. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggd39c19e7b0df6f542ca97806535b57c5924f8eb891dc7527bf4db594a0b1bff8"></a><!-- doxytag: member="YAML_PARSE_FLOW_MAPPING_KEY_STATE" ref="ggd39c19e7b0df6f542ca97806535b57c5924f8eb891dc7527bf4db594a0b1bff8" args="" -->YAML_PARSE_FLOW_MAPPING_KEY_STATE</em>&nbsp;</td><td>
-Expect a key of a flow mapping. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggd39c19e7b0df6f542ca97806535b57c53ba351f6cfba029248ada2c0720246d4"></a><!-- doxytag: member="YAML_PARSE_FLOW_MAPPING_VALUE_STATE" ref="ggd39c19e7b0df6f542ca97806535b57c53ba351f6cfba029248ada2c0720246d4" args="" -->YAML_PARSE_FLOW_MAPPING_VALUE_STATE</em>&nbsp;</td><td>
-Expect a value of a flow mapping. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggd39c19e7b0df6f542ca97806535b57c55a8ec0af5c3314c1ad5e0569b6a5d6d2"></a><!-- doxytag: member="YAML_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE" ref="ggd39c19e7b0df6f542ca97806535b57c55a8ec0af5c3314c1ad5e0569b6a5d6d2" args="" -->YAML_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE</em>&nbsp;</td><td>
-Expect an empty value of a flow mapping. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggd39c19e7b0df6f542ca97806535b57c551fd3d45693e2240251996def375a2a2"></a><!-- doxytag: member="YAML_PARSE_END_STATE" ref="ggd39c19e7b0df6f542ca97806535b57c551fd3d45693e2240251996def375a2a2" args="" -->YAML_PARSE_END_STATE</em>&nbsp;</td><td>
-Expect nothing. 
-<p>
-</td></tr>
-</table>
-</dl>
-
-</div>
-</div><p>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="gcc37ceeb5847e38a3fe24eb0c9b53965"></a><!-- doxytag: member="yaml.h::yaml_parser_initialize" ref="gcc37ceeb5847e38a3fe24eb0c9b53965" args="(yaml_parser_t *parser)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int yaml_parser_initialize           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__parser__s.html">yaml_parser_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>parser</em>          </td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Initialize a parser. 
-<p>
-This function creates a new parser object. An application is responsible for destroying the object using the <a class="el" href="group__parser.html#ga27150107c4667c1024ec0651e2ac26b" title="Destroy a parser.">yaml_parser_delete()</a> function.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>parser</em>&nbsp;</td><td>An empty parser object.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><code>1</code> if the function succeeded, <code>0</code> on error. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="ga27150107c4667c1024ec0651e2ac26b"></a><!-- doxytag: member="yaml.h::yaml_parser_delete" ref="ga27150107c4667c1024ec0651e2ac26b" args="(yaml_parser_t *parser)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void yaml_parser_delete           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__parser__s.html">yaml_parser_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>parser</em>          </td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Destroy a parser. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>parser</em>&nbsp;</td><td>A parser object. </td></tr>
-  </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g08a94762bf5f4c61f72c1da0a407df0d"></a><!-- doxytag: member="yaml.h::yaml_parser_set_input_string" ref="g08a94762bf5f4c61f72c1da0a407df0d" args="(yaml_parser_t *parser, const unsigned char *input, size_t size)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void yaml_parser_set_input_string           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__parser__s.html">yaml_parser_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>parser</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const unsigned char *&nbsp;</td>
-          <td class="paramname"> <em>input</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t&nbsp;</td>
-          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set a string input. 
-<p>
-Note that the <em>input</em> pointer must be valid while the <em>parser</em> object exists. The application is responsible for destroing <em>input</em> after destroying the <em>parser</em>.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>parser</em>&nbsp;</td><td>A parser object. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>input</em>&nbsp;</td><td>A source data. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>size</em>&nbsp;</td><td>The length of the source data in bytes. </td></tr>
-  </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="gc3f00f8beb2365b1e4569692d64696b6"></a><!-- doxytag: member="yaml.h::yaml_parser_set_input_file" ref="gc3f00f8beb2365b1e4569692d64696b6" args="(yaml_parser_t *parser, FILE *file)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void yaml_parser_set_input_file           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__parser__s.html">yaml_parser_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>parser</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">FILE *&nbsp;</td>
-          <td class="paramname"> <em>file</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set a file input. 
-<p>
-<em>file</em> should be a file object open for reading. The application is responsible for closing the <em>file</em>.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>parser</em>&nbsp;</td><td>A parser object. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>file</em>&nbsp;</td><td>An open file. </td></tr>
-  </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="gbc67581bfa771a3e787d907d6914b8d9"></a><!-- doxytag: member="yaml.h::yaml_parser_set_input" ref="gbc67581bfa771a3e787d907d6914b8d9" args="(yaml_parser_t *parser, yaml_read_handler_t *handler, void *data)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void yaml_parser_set_input           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__parser__s.html">yaml_parser_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>parser</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__parser.html#g4982f7e4e001ddb47d2819f38f0cd9d6">yaml_read_handler_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>handler</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">void *&nbsp;</td>
-          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set a generic input handler. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>parser</em>&nbsp;</td><td>A parser object. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>handler</em>&nbsp;</td><td>A read handler. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>data</em>&nbsp;</td><td>Any application data for passing to the read handler. </td></tr>
-  </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g9565b64975570ed34612a19adf02ae6a"></a><!-- doxytag: member="yaml.h::yaml_parser_set_encoding" ref="g9565b64975570ed34612a19adf02ae6a" args="(yaml_parser_t *parser, yaml_encoding_t encoding)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void yaml_parser_set_encoding           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__parser__s.html">yaml_parser_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>parser</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__basic.html#g2170996d7e636397b5e6bc0c1b7df7c6">yaml_encoding_t</a>&nbsp;</td>
-          <td class="paramname"> <em>encoding</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the source encoding. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>parser</em>&nbsp;</td><td>A parser object. </td></tr>
-    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>encoding</em>&nbsp;</td><td>The source encoding. </td></tr>
-  </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g6c2144f131ebd600a075d4ba654540f7"></a><!-- doxytag: member="yaml.h::yaml_parser_scan" ref="g6c2144f131ebd600a075d4ba654540f7" args="(yaml_parser_t *parser, yaml_token_t *token)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int yaml_parser_scan           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__parser__s.html">yaml_parser_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>parser</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structyaml__token__s.html">yaml_token_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>token</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Scan the input stream and produce the next token. 
-<p>
-Call the function subsequently to produce a sequence of tokens corresponding to the input stream. The initial token has the type <code>YAML_STREAM_START_TOKEN</code> while the ending token has the type <code>YAML_STREAM_END_TOKEN</code>.<p>
-An application is responsible for freeing any buffers associated with the produced token object using the <code>yaml_token_delete</code> function.<p>
-An application must not alternate the calls of <a class="el" href="group__parser.html#g6c2144f131ebd600a075d4ba654540f7" title="Scan the input stream and produce the next token.">yaml_parser_scan()</a> with the calls of <a class="el" href="group__parser.html#g559312fb137533d8b7e07f224fe0ec8f" title="Parse the input stream and produce the next parsing event.">yaml_parser_parse()</a> or <a class="el" href="group__parser.html#g9ef7d6e9494766b5880c389bc431d138" title="Parse the input stream and produce the next YAML document.">yaml_parser_load()</a>. Doing this will break the parser.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>parser</em>&nbsp;</td><td>A parser object. </td></tr>
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>token</em>&nbsp;</td><td>An empty token object.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><code>1</code> if the function succeeded, <code>0</code> on error. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g559312fb137533d8b7e07f224fe0ec8f"></a><!-- doxytag: member="yaml.h::yaml_parser_parse" ref="g559312fb137533d8b7e07f224fe0ec8f" args="(yaml_parser_t *parser, yaml_event_t *event)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int yaml_parser_parse           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__parser__s.html">yaml_parser_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>parser</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structyaml__event__s.html">yaml_event_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>event</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Parse the input stream and produce the next parsing event. 
-<p>
-Call the function subsequently to produce a sequence of events corresponding to the input stream. The initial event has the type <code>YAML_STREAM_START_EVENT</code> while the ending event has the type <code>YAML_STREAM_END_EVENT</code>.<p>
-An application is responsible for freeing any buffers associated with the produced event object using the <a class="el" href="group__events.html#g5330d62ef52856aa53188137cb93a6a1" title="Free any memory allocated for an event object.">yaml_event_delete()</a> function.<p>
-An application must not alternate the calls of <a class="el" href="group__parser.html#g559312fb137533d8b7e07f224fe0ec8f" title="Parse the input stream and produce the next parsing event.">yaml_parser_parse()</a> with the calls of <a class="el" href="group__parser.html#g6c2144f131ebd600a075d4ba654540f7" title="Scan the input stream and produce the next token.">yaml_parser_scan()</a> or <a class="el" href="group__parser.html#g9ef7d6e9494766b5880c389bc431d138" title="Parse the input stream and produce the next YAML document.">yaml_parser_load()</a>. Doing this will break the parser.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>parser</em>&nbsp;</td><td>A parser object. </td></tr>
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>event</em>&nbsp;</td><td>An empty event object.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><code>1</code> if the function succeeded, <code>0</code> on error. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g9ef7d6e9494766b5880c389bc431d138"></a><!-- doxytag: member="yaml.h::yaml_parser_load" ref="g9ef7d6e9494766b5880c389bc431d138" args="(yaml_parser_t *parser, yaml_document_t *document)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int yaml_parser_load           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__parser__s.html">yaml_parser_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>parser</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structyaml__document__s.html">yaml_document_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>document</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Parse the input stream and produce the next YAML document. 
-<p>
-Call this function subsequently to produce a sequence of documents constituting the input stream.<p>
-If the produced document has no root node, it means that the document end has been reached.<p>
-An application is responsible for freeing any data associated with the produced document object using the <a class="el" href="group__nodes.html#g2754b1544fb4e110e83fafbc708b0672" title="Delete a YAML document and all its nodes.">yaml_document_delete()</a> function.<p>
-An application must not alternate the calls of <a class="el" href="group__parser.html#g9ef7d6e9494766b5880c389bc431d138" title="Parse the input stream and produce the next YAML document.">yaml_parser_load()</a> with the calls of <a class="el" href="group__parser.html#g6c2144f131ebd600a075d4ba654540f7" title="Scan the input stream and produce the next token.">yaml_parser_scan()</a> or <a class="el" href="group__parser.html#g559312fb137533d8b7e07f224fe0ec8f" title="Parse the input stream and produce the next parsing event.">yaml_parser_parse()</a>. Doing this will break the parser.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>parser</em>&nbsp;</td><td>A parser object. </td></tr>
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>document</em>&nbsp;</td><td>An empty document object.</td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd><code>1</code> if the function succeeded, <code>0</code> on error. </dd></dl>
-
-</div>
-</div><p>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/group__styles.html b/yaml-0.1.3/doc/html/group__styles.html
deleted file mode 100644
index 654c941..0000000
--- a/yaml-0.1.3/doc/html/group__styles.html
+++ /dev/null
@@ -1,238 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Node Styles</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>Node Styles</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group__styles.html#g435ae8886b70c16830d853b6c566e2e0">yaml_scalar_style_e</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__styles.html#g3fa6405631e1afe5bd5c488a6c5e8065">yaml_scalar_style_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Scalar styles.  <a href="#g3fa6405631e1afe5bd5c488a6c5e8065"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group__styles.html#g5079a4ab96e398371c60423abd88ccc0">yaml_sequence_style_e</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__styles.html#g58a1123d271e56c72de6abf852ac4dc2">yaml_sequence_style_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sequence styles.  <a href="#g58a1123d271e56c72de6abf852ac4dc2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group__styles.html#g1efef592e2e3df6f00432c04ef77d98f">yaml_mapping_style_e</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__styles.html#gb47523846a5c5960e07367a28ea9750a">yaml_mapping_style_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Mapping styles.  <a href="#gb47523846a5c5960e07367a28ea9750a"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__styles.html#g435ae8886b70c16830d853b6c566e2e0">yaml_scalar_style_e</a> { <br>
-&nbsp;&nbsp;<a class="el" href="group__styles.html#gg435ae8886b70c16830d853b6c566e2e0ead38b3e6846302ee032927267c34ae0">YAML_ANY_SCALAR_STYLE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__styles.html#gg435ae8886b70c16830d853b6c566e2e0fd62a761a36cf56e1f0414fb391db0e6">YAML_PLAIN_SCALAR_STYLE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__styles.html#gg435ae8886b70c16830d853b6c566e2e068a2af452008e3af3f6de14318dfb2c6">YAML_SINGLE_QUOTED_SCALAR_STYLE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__styles.html#gg435ae8886b70c16830d853b6c566e2e0f6fdfd14690361f4937d67d1f0f011d3">YAML_DOUBLE_QUOTED_SCALAR_STYLE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__styles.html#gg435ae8886b70c16830d853b6c566e2e0542d1ac1bf5c3434df3d2a757d0a8ca0">YAML_LITERAL_SCALAR_STYLE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__styles.html#gg435ae8886b70c16830d853b6c566e2e0a67c3de37dc127986b08bdbe07cee607">YAML_FOLDED_SCALAR_STYLE</a>
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Scalar styles.  <a href="group__styles.html#g435ae8886b70c16830d853b6c566e2e0">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__styles.html#g5079a4ab96e398371c60423abd88ccc0">yaml_sequence_style_e</a> { <br>
-&nbsp;&nbsp;<a class="el" href="group__styles.html#gg5079a4ab96e398371c60423abd88ccc05a10d6f70339876b76e5a002dd16212f">YAML_ANY_SEQUENCE_STYLE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__styles.html#gg5079a4ab96e398371c60423abd88ccc065f99099ef4ecdcf99bbdd798b5dcbb5">YAML_BLOCK_SEQUENCE_STYLE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__styles.html#gg5079a4ab96e398371c60423abd88ccc0e511554b654ebca464d1feec12501d80">YAML_FLOW_SEQUENCE_STYLE</a>
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sequence styles.  <a href="group__styles.html#g5079a4ab96e398371c60423abd88ccc0">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__styles.html#g1efef592e2e3df6f00432c04ef77d98f">yaml_mapping_style_e</a> { <br>
-&nbsp;&nbsp;<a class="el" href="group__styles.html#gg1efef592e2e3df6f00432c04ef77d98fc580a83312204ea142c3d08a4954a74a">YAML_ANY_MAPPING_STYLE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__styles.html#gg1efef592e2e3df6f00432c04ef77d98fd5e70fe97009c8247a45f4620f071874">YAML_BLOCK_MAPPING_STYLE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__styles.html#gg1efef592e2e3df6f00432c04ef77d98f4c5425077b0310cbf84e1d73e20b42d3">YAML_FLOW_MAPPING_STYLE</a>
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Mapping styles.  <a href="group__styles.html#g1efef592e2e3df6f00432c04ef77d98f">More...</a><br></td></tr>
-</table>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="g3fa6405631e1afe5bd5c488a6c5e8065"></a><!-- doxytag: member="yaml.h::yaml_scalar_style_t" ref="g3fa6405631e1afe5bd5c488a6c5e8065" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef enum <a class="el" href="group__styles.html#g435ae8886b70c16830d853b6c566e2e0">yaml_scalar_style_e</a>  <a class="el" href="group__styles.html#g3fa6405631e1afe5bd5c488a6c5e8065">yaml_scalar_style_t</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Scalar styles. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="g58a1123d271e56c72de6abf852ac4dc2"></a><!-- doxytag: member="yaml.h::yaml_sequence_style_t" ref="g58a1123d271e56c72de6abf852ac4dc2" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef enum <a class="el" href="group__styles.html#g5079a4ab96e398371c60423abd88ccc0">yaml_sequence_style_e</a>  <a class="el" href="group__styles.html#g58a1123d271e56c72de6abf852ac4dc2">yaml_sequence_style_t</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Sequence styles. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="gb47523846a5c5960e07367a28ea9750a"></a><!-- doxytag: member="yaml.h::yaml_mapping_style_t" ref="gb47523846a5c5960e07367a28ea9750a" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef enum <a class="el" href="group__styles.html#g1efef592e2e3df6f00432c04ef77d98f">yaml_mapping_style_e</a>  <a class="el" href="group__styles.html#gb47523846a5c5960e07367a28ea9750a">yaml_mapping_style_t</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Mapping styles. 
-<p>
-
-</div>
-</div><p>
-<hr><h2>Enumeration Type Documentation</h2>
-<a class="anchor" name="g435ae8886b70c16830d853b6c566e2e0"></a><!-- doxytag: member="yaml.h::yaml_scalar_style_e" ref="g435ae8886b70c16830d853b6c566e2e0" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">enum <a class="el" href="group__styles.html#g435ae8886b70c16830d853b6c566e2e0">yaml_scalar_style_e</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Scalar styles. 
-<p>
-<dl compact><dt><b>Enumerator: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="gg435ae8886b70c16830d853b6c566e2e0ead38b3e6846302ee032927267c34ae0"></a><!-- doxytag: member="YAML_ANY_SCALAR_STYLE" ref="gg435ae8886b70c16830d853b6c566e2e0ead38b3e6846302ee032927267c34ae0" args="" -->YAML_ANY_SCALAR_STYLE</em>&nbsp;</td><td>
-Let the emitter choose the style. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg435ae8886b70c16830d853b6c566e2e0fd62a761a36cf56e1f0414fb391db0e6"></a><!-- doxytag: member="YAML_PLAIN_SCALAR_STYLE" ref="gg435ae8886b70c16830d853b6c566e2e0fd62a761a36cf56e1f0414fb391db0e6" args="" -->YAML_PLAIN_SCALAR_STYLE</em>&nbsp;</td><td>
-The plain scalar style. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg435ae8886b70c16830d853b6c566e2e068a2af452008e3af3f6de14318dfb2c6"></a><!-- doxytag: member="YAML_SINGLE_QUOTED_SCALAR_STYLE" ref="gg435ae8886b70c16830d853b6c566e2e068a2af452008e3af3f6de14318dfb2c6" args="" -->YAML_SINGLE_QUOTED_SCALAR_STYLE</em>&nbsp;</td><td>
-The single-quoted scalar style. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg435ae8886b70c16830d853b6c566e2e0f6fdfd14690361f4937d67d1f0f011d3"></a><!-- doxytag: member="YAML_DOUBLE_QUOTED_SCALAR_STYLE" ref="gg435ae8886b70c16830d853b6c566e2e0f6fdfd14690361f4937d67d1f0f011d3" args="" -->YAML_DOUBLE_QUOTED_SCALAR_STYLE</em>&nbsp;</td><td>
-The double-quoted scalar style. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg435ae8886b70c16830d853b6c566e2e0542d1ac1bf5c3434df3d2a757d0a8ca0"></a><!-- doxytag: member="YAML_LITERAL_SCALAR_STYLE" ref="gg435ae8886b70c16830d853b6c566e2e0542d1ac1bf5c3434df3d2a757d0a8ca0" args="" -->YAML_LITERAL_SCALAR_STYLE</em>&nbsp;</td><td>
-The literal scalar style. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg435ae8886b70c16830d853b6c566e2e0a67c3de37dc127986b08bdbe07cee607"></a><!-- doxytag: member="YAML_FOLDED_SCALAR_STYLE" ref="gg435ae8886b70c16830d853b6c566e2e0a67c3de37dc127986b08bdbe07cee607" args="" -->YAML_FOLDED_SCALAR_STYLE</em>&nbsp;</td><td>
-The folded scalar style. 
-<p>
-</td></tr>
-</table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g5079a4ab96e398371c60423abd88ccc0"></a><!-- doxytag: member="yaml.h::yaml_sequence_style_e" ref="g5079a4ab96e398371c60423abd88ccc0" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">enum <a class="el" href="group__styles.html#g5079a4ab96e398371c60423abd88ccc0">yaml_sequence_style_e</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Sequence styles. 
-<p>
-<dl compact><dt><b>Enumerator: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="gg5079a4ab96e398371c60423abd88ccc05a10d6f70339876b76e5a002dd16212f"></a><!-- doxytag: member="YAML_ANY_SEQUENCE_STYLE" ref="gg5079a4ab96e398371c60423abd88ccc05a10d6f70339876b76e5a002dd16212f" args="" -->YAML_ANY_SEQUENCE_STYLE</em>&nbsp;</td><td>
-Let the emitter choose the style. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg5079a4ab96e398371c60423abd88ccc065f99099ef4ecdcf99bbdd798b5dcbb5"></a><!-- doxytag: member="YAML_BLOCK_SEQUENCE_STYLE" ref="gg5079a4ab96e398371c60423abd88ccc065f99099ef4ecdcf99bbdd798b5dcbb5" args="" -->YAML_BLOCK_SEQUENCE_STYLE</em>&nbsp;</td><td>
-The block sequence style. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg5079a4ab96e398371c60423abd88ccc0e511554b654ebca464d1feec12501d80"></a><!-- doxytag: member="YAML_FLOW_SEQUENCE_STYLE" ref="gg5079a4ab96e398371c60423abd88ccc0e511554b654ebca464d1feec12501d80" args="" -->YAML_FLOW_SEQUENCE_STYLE</em>&nbsp;</td><td>
-The flow sequence style. 
-<p>
-</td></tr>
-</table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g1efef592e2e3df6f00432c04ef77d98f"></a><!-- doxytag: member="yaml.h::yaml_mapping_style_e" ref="g1efef592e2e3df6f00432c04ef77d98f" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">enum <a class="el" href="group__styles.html#g1efef592e2e3df6f00432c04ef77d98f">yaml_mapping_style_e</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Mapping styles. 
-<p>
-<dl compact><dt><b>Enumerator: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="gg1efef592e2e3df6f00432c04ef77d98fc580a83312204ea142c3d08a4954a74a"></a><!-- doxytag: member="YAML_ANY_MAPPING_STYLE" ref="gg1efef592e2e3df6f00432c04ef77d98fc580a83312204ea142c3d08a4954a74a" args="" -->YAML_ANY_MAPPING_STYLE</em>&nbsp;</td><td>
-Let the emitter choose the style. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg1efef592e2e3df6f00432c04ef77d98fd5e70fe97009c8247a45f4620f071874"></a><!-- doxytag: member="YAML_BLOCK_MAPPING_STYLE" ref="gg1efef592e2e3df6f00432c04ef77d98fd5e70fe97009c8247a45f4620f071874" args="" -->YAML_BLOCK_MAPPING_STYLE</em>&nbsp;</td><td>
-The block mapping style. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="gg1efef592e2e3df6f00432c04ef77d98f4c5425077b0310cbf84e1d73e20b42d3"></a><!-- doxytag: member="YAML_FLOW_MAPPING_STYLE" ref="gg1efef592e2e3df6f00432c04ef77d98f4c5425077b0310cbf84e1d73e20b42d3" args="" -->YAML_FLOW_MAPPING_STYLE</em>&nbsp;</td><td>
-The flow mapping style. 
-<p>
-</td></tr>
-</table>
-</dl>
-
-</div>
-</div><p>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/group__tokens.html b/yaml-0.1.3/doc/html/group__tokens.html
deleted file mode 100644
index b525824..0000000
--- a/yaml-0.1.3/doc/html/group__tokens.html
+++ /dev/null
@@ -1,264 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Tokens</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>Tokens</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__token__s.html">yaml_token_s</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The token structure.  <a href="structyaml__token__s.html#_details">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group__tokens.html#gae955b10aa6b5f922de64873bf4ccdbd">yaml_token_type_e</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__tokens.html#gba51dda022dced02f8df2224ab7993f7">yaml_token_type_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Token types.  <a href="#gba51dda022dced02f8df2224ab7993f7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structyaml__token__s.html">yaml_token_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__tokens.html#g1ed3dc460e62aee8270c5d63d5734bbb">yaml_token_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The token structure.  <a href="#g1ed3dc460e62aee8270c5d63d5734bbb"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__tokens.html#gae955b10aa6b5f922de64873bf4ccdbd">yaml_token_type_e</a> { <br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd66c1b8eec0cc6402c0fb4b2d1b017f92">YAML_NO_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdf5f42f2d5025e5629034848d2e1db6c9">YAML_STREAM_START_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd020a0a266ed7fc4902dd02750512dc19">YAML_STREAM_END_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbda15a96ec81c00c7db8f83628a89542e4">YAML_VERSION_DIRECTIVE_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbded517a61b868769e2bfced40678be414">YAML_TAG_DIRECTIVE_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdbcafcdb506886387f93cca734ddfd670">YAML_DOCUMENT_START_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd8d0908a82229f44d5ea92a2c380f4579">YAML_DOCUMENT_END_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd4bfddc427da159168ee47267cbeea94f">YAML_BLOCK_SEQUENCE_START_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd9a95db99bd99f7f9b4e1e879106297dc">YAML_BLOCK_MAPPING_START_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd439948425097b4fc853f39f0de14a5ff">YAML_BLOCK_END_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd862a2390be4abd59bb7bf55b18d9260c">YAML_FLOW_SEQUENCE_START_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdb3496580bee30936f756e0102e98f331">YAML_FLOW_SEQUENCE_END_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdff68a3f7c000c5294211eef8f4156100">YAML_FLOW_MAPPING_START_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdad99bf47234572d9d0eeea7669d1e769">YAML_FLOW_MAPPING_END_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbda9bdf1d6da41fcd4d356c7bcfa0227b4">YAML_BLOCK_ENTRY_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdf11ab5655350e4cf0559f78382daa93f">YAML_FLOW_ENTRY_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd94d701c1f5bb8a392bb45b7cbf4bc2a5">YAML_KEY_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdac46e8a6a6e0614de322c7b53d785b4e">YAML_VALUE_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd080c398f6fc31f9ab35c7cf94cf948c2">YAML_ALIAS_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd7f0855938c5ccc4820b68ddd7985a5d0">YAML_ANCHOR_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd8f02c514b72f29bd3c26b7c832d8152d">YAML_TAG_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd107a78f31dd9857d06e9ead7936ea51e">YAML_SCALAR_TOKEN</a>
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Token types.  <a href="group__tokens.html#gae955b10aa6b5f922de64873bf4ccdbd">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__tokens.html#g3140131870e38e27f92a8fd286e5c004">yaml_token_delete</a> (<a class="el" href="structyaml__token__s.html">yaml_token_t</a> *token)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free any memory allocated for a token object.  <a href="#g3140131870e38e27f92a8fd286e5c004"></a><br></td></tr>
-</table>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="gba51dda022dced02f8df2224ab7993f7"></a><!-- doxytag: member="yaml.h::yaml_token_type_t" ref="gba51dda022dced02f8df2224ab7993f7" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef enum <a class="el" href="group__tokens.html#gae955b10aa6b5f922de64873bf4ccdbd">yaml_token_type_e</a>  <a class="el" href="group__tokens.html#gba51dda022dced02f8df2224ab7993f7">yaml_token_type_t</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Token types. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="g1ed3dc460e62aee8270c5d63d5734bbb"></a><!-- doxytag: member="yaml.h::yaml_token_t" ref="g1ed3dc460e62aee8270c5d63d5734bbb" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef struct <a class="el" href="structyaml__token__s.html">yaml_token_s</a>  <a class="el" href="structyaml__token__s.html">yaml_token_t</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The token structure. 
-<p>
-
-</div>
-</div><p>
-<hr><h2>Enumeration Type Documentation</h2>
-<a class="anchor" name="gae955b10aa6b5f922de64873bf4ccdbd"></a><!-- doxytag: member="yaml.h::yaml_token_type_e" ref="gae955b10aa6b5f922de64873bf4ccdbd" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">enum <a class="el" href="group__tokens.html#gae955b10aa6b5f922de64873bf4ccdbd">yaml_token_type_e</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Token types. 
-<p>
-<dl compact><dt><b>Enumerator: </b></dt><dd>
-<table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" name="ggae955b10aa6b5f922de64873bf4ccdbd66c1b8eec0cc6402c0fb4b2d1b017f92"></a><!-- doxytag: member="YAML_NO_TOKEN" ref="ggae955b10aa6b5f922de64873bf4ccdbd66c1b8eec0cc6402c0fb4b2d1b017f92" args="" -->YAML_NO_TOKEN</em>&nbsp;</td><td>
-An empty token. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggae955b10aa6b5f922de64873bf4ccdbdf5f42f2d5025e5629034848d2e1db6c9"></a><!-- doxytag: member="YAML_STREAM_START_TOKEN" ref="ggae955b10aa6b5f922de64873bf4ccdbdf5f42f2d5025e5629034848d2e1db6c9" args="" -->YAML_STREAM_START_TOKEN</em>&nbsp;</td><td>
-A STREAM-START token. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggae955b10aa6b5f922de64873bf4ccdbd020a0a266ed7fc4902dd02750512dc19"></a><!-- doxytag: member="YAML_STREAM_END_TOKEN" ref="ggae955b10aa6b5f922de64873bf4ccdbd020a0a266ed7fc4902dd02750512dc19" args="" -->YAML_STREAM_END_TOKEN</em>&nbsp;</td><td>
-A STREAM-END token. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggae955b10aa6b5f922de64873bf4ccdbda15a96ec81c00c7db8f83628a89542e4"></a><!-- doxytag: member="YAML_VERSION_DIRECTIVE_TOKEN" ref="ggae955b10aa6b5f922de64873bf4ccdbda15a96ec81c00c7db8f83628a89542e4" args="" -->YAML_VERSION_DIRECTIVE_TOKEN</em>&nbsp;</td><td>
-A VERSION-DIRECTIVE token. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggae955b10aa6b5f922de64873bf4ccdbded517a61b868769e2bfced40678be414"></a><!-- doxytag: member="YAML_TAG_DIRECTIVE_TOKEN" ref="ggae955b10aa6b5f922de64873bf4ccdbded517a61b868769e2bfced40678be414" args="" -->YAML_TAG_DIRECTIVE_TOKEN</em>&nbsp;</td><td>
-A TAG-DIRECTIVE token. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggae955b10aa6b5f922de64873bf4ccdbdbcafcdb506886387f93cca734ddfd670"></a><!-- doxytag: member="YAML_DOCUMENT_START_TOKEN" ref="ggae955b10aa6b5f922de64873bf4ccdbdbcafcdb506886387f93cca734ddfd670" args="" -->YAML_DOCUMENT_START_TOKEN</em>&nbsp;</td><td>
-A DOCUMENT-START token. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggae955b10aa6b5f922de64873bf4ccdbd8d0908a82229f44d5ea92a2c380f4579"></a><!-- doxytag: member="YAML_DOCUMENT_END_TOKEN" ref="ggae955b10aa6b5f922de64873bf4ccdbd8d0908a82229f44d5ea92a2c380f4579" args="" -->YAML_DOCUMENT_END_TOKEN</em>&nbsp;</td><td>
-A DOCUMENT-END token. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggae955b10aa6b5f922de64873bf4ccdbd4bfddc427da159168ee47267cbeea94f"></a><!-- doxytag: member="YAML_BLOCK_SEQUENCE_START_TOKEN" ref="ggae955b10aa6b5f922de64873bf4ccdbd4bfddc427da159168ee47267cbeea94f" args="" -->YAML_BLOCK_SEQUENCE_START_TOKEN</em>&nbsp;</td><td>
-A BLOCK-SEQUENCE-START token. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggae955b10aa6b5f922de64873bf4ccdbd9a95db99bd99f7f9b4e1e879106297dc"></a><!-- doxytag: member="YAML_BLOCK_MAPPING_START_TOKEN" ref="ggae955b10aa6b5f922de64873bf4ccdbd9a95db99bd99f7f9b4e1e879106297dc" args="" -->YAML_BLOCK_MAPPING_START_TOKEN</em>&nbsp;</td><td>
-A BLOCK-SEQUENCE-END token. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggae955b10aa6b5f922de64873bf4ccdbd439948425097b4fc853f39f0de14a5ff"></a><!-- doxytag: member="YAML_BLOCK_END_TOKEN" ref="ggae955b10aa6b5f922de64873bf4ccdbd439948425097b4fc853f39f0de14a5ff" args="" -->YAML_BLOCK_END_TOKEN</em>&nbsp;</td><td>
-A BLOCK-END token. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggae955b10aa6b5f922de64873bf4ccdbd862a2390be4abd59bb7bf55b18d9260c"></a><!-- doxytag: member="YAML_FLOW_SEQUENCE_START_TOKEN" ref="ggae955b10aa6b5f922de64873bf4ccdbd862a2390be4abd59bb7bf55b18d9260c" args="" -->YAML_FLOW_SEQUENCE_START_TOKEN</em>&nbsp;</td><td>
-A FLOW-SEQUENCE-START token. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggae955b10aa6b5f922de64873bf4ccdbdb3496580bee30936f756e0102e98f331"></a><!-- doxytag: member="YAML_FLOW_SEQUENCE_END_TOKEN" ref="ggae955b10aa6b5f922de64873bf4ccdbdb3496580bee30936f756e0102e98f331" args="" -->YAML_FLOW_SEQUENCE_END_TOKEN</em>&nbsp;</td><td>
-A FLOW-SEQUENCE-END token. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggae955b10aa6b5f922de64873bf4ccdbdff68a3f7c000c5294211eef8f4156100"></a><!-- doxytag: member="YAML_FLOW_MAPPING_START_TOKEN" ref="ggae955b10aa6b5f922de64873bf4ccdbdff68a3f7c000c5294211eef8f4156100" args="" -->YAML_FLOW_MAPPING_START_TOKEN</em>&nbsp;</td><td>
-A FLOW-MAPPING-START token. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggae955b10aa6b5f922de64873bf4ccdbdad99bf47234572d9d0eeea7669d1e769"></a><!-- doxytag: member="YAML_FLOW_MAPPING_END_TOKEN" ref="ggae955b10aa6b5f922de64873bf4ccdbdad99bf47234572d9d0eeea7669d1e769" args="" -->YAML_FLOW_MAPPING_END_TOKEN</em>&nbsp;</td><td>
-A FLOW-MAPPING-END token. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggae955b10aa6b5f922de64873bf4ccdbda9bdf1d6da41fcd4d356c7bcfa0227b4"></a><!-- doxytag: member="YAML_BLOCK_ENTRY_TOKEN" ref="ggae955b10aa6b5f922de64873bf4ccdbda9bdf1d6da41fcd4d356c7bcfa0227b4" args="" -->YAML_BLOCK_ENTRY_TOKEN</em>&nbsp;</td><td>
-A BLOCK-ENTRY token. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggae955b10aa6b5f922de64873bf4ccdbdf11ab5655350e4cf0559f78382daa93f"></a><!-- doxytag: member="YAML_FLOW_ENTRY_TOKEN" ref="ggae955b10aa6b5f922de64873bf4ccdbdf11ab5655350e4cf0559f78382daa93f" args="" -->YAML_FLOW_ENTRY_TOKEN</em>&nbsp;</td><td>
-A FLOW-ENTRY token. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggae955b10aa6b5f922de64873bf4ccdbd94d701c1f5bb8a392bb45b7cbf4bc2a5"></a><!-- doxytag: member="YAML_KEY_TOKEN" ref="ggae955b10aa6b5f922de64873bf4ccdbd94d701c1f5bb8a392bb45b7cbf4bc2a5" args="" -->YAML_KEY_TOKEN</em>&nbsp;</td><td>
-A KEY token. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggae955b10aa6b5f922de64873bf4ccdbdac46e8a6a6e0614de322c7b53d785b4e"></a><!-- doxytag: member="YAML_VALUE_TOKEN" ref="ggae955b10aa6b5f922de64873bf4ccdbdac46e8a6a6e0614de322c7b53d785b4e" args="" -->YAML_VALUE_TOKEN</em>&nbsp;</td><td>
-A VALUE token. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggae955b10aa6b5f922de64873bf4ccdbd080c398f6fc31f9ab35c7cf94cf948c2"></a><!-- doxytag: member="YAML_ALIAS_TOKEN" ref="ggae955b10aa6b5f922de64873bf4ccdbd080c398f6fc31f9ab35c7cf94cf948c2" args="" -->YAML_ALIAS_TOKEN</em>&nbsp;</td><td>
-An ALIAS token. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggae955b10aa6b5f922de64873bf4ccdbd7f0855938c5ccc4820b68ddd7985a5d0"></a><!-- doxytag: member="YAML_ANCHOR_TOKEN" ref="ggae955b10aa6b5f922de64873bf4ccdbd7f0855938c5ccc4820b68ddd7985a5d0" args="" -->YAML_ANCHOR_TOKEN</em>&nbsp;</td><td>
-An ANCHOR token. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggae955b10aa6b5f922de64873bf4ccdbd8f02c514b72f29bd3c26b7c832d8152d"></a><!-- doxytag: member="YAML_TAG_TOKEN" ref="ggae955b10aa6b5f922de64873bf4ccdbd8f02c514b72f29bd3c26b7c832d8152d" args="" -->YAML_TAG_TOKEN</em>&nbsp;</td><td>
-A TAG token. 
-<p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" name="ggae955b10aa6b5f922de64873bf4ccdbd107a78f31dd9857d06e9ead7936ea51e"></a><!-- doxytag: member="YAML_SCALAR_TOKEN" ref="ggae955b10aa6b5f922de64873bf4ccdbd107a78f31dd9857d06e9ead7936ea51e" args="" -->YAML_SCALAR_TOKEN</em>&nbsp;</td><td>
-A SCALAR token. 
-<p>
-</td></tr>
-</table>
-</dl>
-
-</div>
-</div><p>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="g3140131870e38e27f92a8fd286e5c004"></a><!-- doxytag: member="yaml.h::yaml_token_delete" ref="g3140131870e38e27f92a8fd286e5c004" args="(yaml_token_t *token)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void yaml_token_delete           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structyaml__token__s.html">yaml_token_t</a> *&nbsp;</td>
-          <td class="paramname"> <em>token</em>          </td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Free any memory allocated for a token object. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>token</em>&nbsp;</td><td>A token object. </td></tr>
-  </table>
-</dl>
-
-</div>
-</div><p>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/group__version.html b/yaml-0.1.3/doc/html/group__version.html
deleted file mode 100644
index c491c92..0000000
--- a/yaml-0.1.3/doc/html/group__version.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Version Information</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>Version Information</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#gf1ba5c1c34e809db5047d79a9fa85a73">yaml_get_version_string</a> (void)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the library version as a string.  <a href="#gf1ba5c1c34e809db5047d79a9fa85a73"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#gec764c91f3e181ae63d3d59b7980fe78">yaml_get_version</a> (int *major, int *minor, int *patch)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the library version numbers.  <a href="#gec764c91f3e181ae63d3d59b7980fe78"></a><br></td></tr>
-</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="gf1ba5c1c34e809db5047d79a9fa85a73"></a><!-- doxytag: member="yaml.h::yaml_get_version_string" ref="gf1ba5c1c34e809db5047d79a9fa85a73" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* yaml_get_version_string           </td>
-          <td>(</td>
-          <td class="paramtype">void&nbsp;</td>
-          <td class="paramname">          </td>
-          <td>&nbsp;)&nbsp;</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the library version as a string. 
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>The function returns the pointer to a static string of the form <code>"X.Y.Z"</code>, where <code>X</code> is the major version number, <code>Y</code> is a minor version number, and <code>Z</code> is the patch version number. </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="gec764c91f3e181ae63d3d59b7980fe78"></a><!-- doxytag: member="yaml.h::yaml_get_version" ref="gec764c91f3e181ae63d3d59b7980fe78" args="(int *major, int *minor, int *patch)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void yaml_get_version           </td>
-          <td>(</td>
-          <td class="paramtype">int *&nbsp;</td>
-          <td class="paramname"> <em>major</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int *&nbsp;</td>
-          <td class="paramname"> <em>minor</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int *&nbsp;</td>
-          <td class="paramname"> <em>patch</em></td><td>&nbsp;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the library version numbers. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>major</em>&nbsp;</td><td>Major version number. </td></tr>
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>minor</em>&nbsp;</td><td>Minor version number. </td></tr>
-    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>patch</em>&nbsp;</td><td>Patch version number. </td></tr>
-  </table>
-</dl>
-
-</div>
-</div><p>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/index.html b/yaml-0.1.3/doc/html/index.html
deleted file mode 100644
index 4966981..0000000
--- a/yaml-0.1.3/doc/html/index.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Main Page</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li class="current"><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>yaml Documentation</h1>
-<p>
-<h3 align="center">0.1.3 </h3></div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/modules.html b/yaml-0.1.3/doc/html/modules.html
deleted file mode 100644
index 9b06e33..0000000
--- a/yaml-0.1.3/doc/html/modules.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: Module Index</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li class="current"><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>Modules</h1>Here is a list of all modules:<ul>
-<li><a class="el" href="group__export.html">Export Definitions</a>
-<li><a class="el" href="group__version.html">Version Information</a>
-<li><a class="el" href="group__basic.html">Basic Types</a>
-<li><a class="el" href="group__styles.html">Node Styles</a>
-<li><a class="el" href="group__tokens.html">Tokens</a>
-<li><a class="el" href="group__events.html">Events</a>
-<li><a class="el" href="group__nodes.html">Nodes</a>
-<li><a class="el" href="group__parser.html">Parser Definitions</a>
-<li><a class="el" href="group__emitter.html">Emitter Definitions</a>
-</ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/structyaml__alias__data__s.html b/yaml-0.1.3/doc/html/structyaml__alias__data__s.html
deleted file mode 100644
index 7babd28..0000000
--- a/yaml-0.1.3/doc/html/structyaml__alias__data__s.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: yaml_alias_data_s Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>yaml_alias_data_s Struct Reference<br>
-<small>
-[<a class="el" href="group__parser.html">Parser Definitions</a>]</small>
-</h1><!-- doxytag: class="yaml_alias_data_s" -->This structure holds aliases data.  
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;yaml.h&gt;</code>
-<p>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__alias__data__s.html#c4b9a352dd8ff747bfa63a54832d7962">anchor</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The anchor.  <a href="#c4b9a352dd8ff747bfa63a54832d7962"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__alias__data__s.html#c45e17508386dec9163b4aa5cfb5312e">index</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The node id.  <a href="#c45e17508386dec9163b4aa5cfb5312e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__alias__data__s.html#9f8d87255bfc39df69068ed87b602e9f">mark</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The anchor mark.  <a href="#9f8d87255bfc39df69068ed87b602e9f"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This structure holds aliases data. <hr><h2>Field Documentation</h2>
-<a class="anchor" name="c4b9a352dd8ff747bfa63a54832d7962"></a><!-- doxytag: member="yaml_alias_data_s::anchor" ref="c4b9a352dd8ff747bfa63a54832d7962" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a>* <a class="el" href="structyaml__alias__data__s.html#c4b9a352dd8ff747bfa63a54832d7962">yaml_alias_data_s::anchor</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The anchor. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="c45e17508386dec9163b4aa5cfb5312e"></a><!-- doxytag: member="yaml_alias_data_s::index" ref="c45e17508386dec9163b4aa5cfb5312e" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int <a class="el" href="structyaml__alias__data__s.html#c45e17508386dec9163b4aa5cfb5312e">yaml_alias_data_s::index</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The node id. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="9f8d87255bfc39df69068ed87b602e9f"></a><!-- doxytag: member="yaml_alias_data_s::mark" ref="9f8d87255bfc39df69068ed87b602e9f" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a> <a class="el" href="structyaml__alias__data__s.html#9f8d87255bfc39df69068ed87b602e9f">yaml_alias_data_s::mark</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The anchor mark. 
-<p>
-
-</div>
-</div><p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="yaml_8h.html">yaml.h</a></ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/structyaml__document__s.html b/yaml-0.1.3/doc/html/structyaml__document__s.html
deleted file mode 100644
index 50e79cd..0000000
--- a/yaml-0.1.3/doc/html/structyaml__document__s.html
+++ /dev/null
@@ -1,260 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: yaml_document_s Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>yaml_document_s Struct Reference<br>
-<small>
-[<a class="el" href="group__nodes.html">Nodes</a>]</small>
-</h1><!-- doxytag: class="yaml_document_s" -->The document structure.  
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;yaml.h&gt;</code>
-<p>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap>struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__node__s.html">yaml_node_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__document__s.html#a3f9a11d8fbe4ac2eada1786176bab89">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the stack.  <a href="#5afb9c4ff4dfa2564d94f10b9b3a5cff"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__node__s.html">yaml_node_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__document__s.html#dc9ffcca86a2684362428da69ffd3dea">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the stack.  <a href="#95e8c8484a1d072cd12fe8e9bbfc5637"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__node__s.html">yaml_node_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__document__s.html#5ac36f59c4a0f28124c2e1630ca4f227">top</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The top of the stack.  <a href="#fdfa6febcc566fd5eab4af30f2d2b535"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__document__s.html#a9eeab76b69cc84a6ab1b02c14cfd594">nodes</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The document nodes.  <a href="#a9eeab76b69cc84a6ab1b02c14cfd594"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__version__directive__s.html">yaml_version_directive_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__document__s.html#7d36862d070804b8bedb53866487ac6d">version_directive</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The version directive.  <a href="#7d36862d070804b8bedb53866487ac6d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__document__s.html#fb9b6cb56a29f880ad6b76c532133c40">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the tag directives list.  <a href="#fbbf86f866b471bc8bdd14cf93b41f31"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__document__s.html#f14fd1a6c1fd10088391f07349ba55e8">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the tag directives list.  <a href="#5557c8dc0a0c72a979c33dfdc948fffb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__document__s.html#f1e09d0469fc24106f3790b1e3de09e1">tag_directives</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The list of tag directives.  <a href="#f1e09d0469fc24106f3790b1e3de09e1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="65c49e4f61ca5c2f6ecf410e1cc65787"></a><!-- doxytag: member="yaml_document_s::start_implicit" ref="65c49e4f61ca5c2f6ecf410e1cc65787" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__document__s.html#65c49e4f61ca5c2f6ecf410e1cc65787">start_implicit</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Is the document start indicator implicit? <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="59de90b4078659fd0f49377929afcac1"></a><!-- doxytag: member="yaml_document_s::end_implicit" ref="59de90b4078659fd0f49377929afcac1" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__document__s.html#59de90b4078659fd0f49377929afcac1">end_implicit</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Is the document end indicator implicit? <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__document__s.html#0a37311ebf8f6637e4bc1d280a879997">start_mark</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the document.  <a href="#0a37311ebf8f6637e4bc1d280a879997"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__document__s.html#9299efdaadf764f4d03641a3ee51e0d0">end_mark</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the document.  <a href="#9299efdaadf764f4d03641a3ee51e0d0"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-The document structure. 
-<p>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="a3f9a11d8fbe4ac2eada1786176bab89"></a><!-- doxytag: member="yaml_document_s::start" ref="a3f9a11d8fbe4ac2eada1786176bab89" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__node__s.html">yaml_node_t</a>* <a class="el" href="structyaml__document__s.html#a3f9a11d8fbe4ac2eada1786176bab89">yaml_document_s::start</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The beginning of the stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="dc9ffcca86a2684362428da69ffd3dea"></a><!-- doxytag: member="yaml_document_s::end" ref="dc9ffcca86a2684362428da69ffd3dea" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__node__s.html">yaml_node_t</a>* <a class="el" href="structyaml__document__s.html#dc9ffcca86a2684362428da69ffd3dea">yaml_document_s::end</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The end of the stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="5ac36f59c4a0f28124c2e1630ca4f227"></a><!-- doxytag: member="yaml_document_s::top" ref="5ac36f59c4a0f28124c2e1630ca4f227" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__node__s.html">yaml_node_t</a>* <a class="el" href="structyaml__document__s.html#5ac36f59c4a0f28124c2e1630ca4f227">yaml_document_s::top</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The top of the stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="a9eeab76b69cc84a6ab1b02c14cfd594"></a><!-- doxytag: member="yaml_document_s::nodes" ref="a9eeab76b69cc84a6ab1b02c14cfd594" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__document__s.html#a9eeab76b69cc84a6ab1b02c14cfd594">yaml_document_s::nodes</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The document nodes. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="7d36862d070804b8bedb53866487ac6d"></a><!-- doxytag: member="yaml_document_s::version_directive" ref="7d36862d070804b8bedb53866487ac6d" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__version__directive__s.html">yaml_version_directive_t</a>* <a class="el" href="structyaml__document__s.html#7d36862d070804b8bedb53866487ac6d">yaml_document_s::version_directive</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The version directive. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="fb9b6cb56a29f880ad6b76c532133c40"></a><!-- doxytag: member="yaml_document_s::start" ref="fb9b6cb56a29f880ad6b76c532133c40" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a>* <a class="el" href="structyaml__document__s.html#a3f9a11d8fbe4ac2eada1786176bab89">yaml_document_s::start</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The beginning of the tag directives list. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="f14fd1a6c1fd10088391f07349ba55e8"></a><!-- doxytag: member="yaml_document_s::end" ref="f14fd1a6c1fd10088391f07349ba55e8" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a>* <a class="el" href="structyaml__document__s.html#dc9ffcca86a2684362428da69ffd3dea">yaml_document_s::end</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The end of the tag directives list. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="f1e09d0469fc24106f3790b1e3de09e1"></a><!-- doxytag: member="yaml_document_s::tag_directives" ref="f1e09d0469fc24106f3790b1e3de09e1" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__document__s.html#f1e09d0469fc24106f3790b1e3de09e1">yaml_document_s::tag_directives</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The list of tag directives. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="0a37311ebf8f6637e4bc1d280a879997"></a><!-- doxytag: member="yaml_document_s::start_mark" ref="0a37311ebf8f6637e4bc1d280a879997" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a> <a class="el" href="structyaml__document__s.html#0a37311ebf8f6637e4bc1d280a879997">yaml_document_s::start_mark</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The beginning of the document. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="9299efdaadf764f4d03641a3ee51e0d0"></a><!-- doxytag: member="yaml_document_s::end_mark" ref="9299efdaadf764f4d03641a3ee51e0d0" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a> <a class="el" href="structyaml__document__s.html#9299efdaadf764f4d03641a3ee51e0d0">yaml_document_s::end_mark</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The end of the document. 
-<p>
-
-</div>
-</div><p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="yaml_8h.html">yaml.h</a></ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/structyaml__emitter__s.html b/yaml-0.1.3/doc/html/structyaml__emitter__s.html
deleted file mode 100644
index 54f03bb..0000000
--- a/yaml-0.1.3/doc/html/structyaml__emitter__s.html
+++ /dev/null
@@ -1,1551 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: yaml_emitter_s Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>yaml_emitter_s Struct Reference<br>
-<small>
-[<a class="el" href="group__emitter.html">Emitter Definitions</a>]</small>
-</h1><!-- doxytag: class="yaml_emitter_s" -->The emitter structure.  
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;yaml.h&gt;</code>
-<p>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#db154d3d10b34077792b8e4a0f0596f7">buffer</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The buffer pointer.  <a href="#db154d3d10b34077792b8e4a0f0596f7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#53bdc6a00632b48c81098aad91a9fd8d">size</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The buffer size.  <a href="#53bdc6a00632b48c81098aad91a9fd8d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#1851639b8f0e53b8e272c806d9fb648b">size_written</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The number of written bytes.  <a href="#1851639b8f0e53b8e272c806d9fb648b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;unsigned char *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#db154d3d10b34077792b8e4a0f0596f7">buffer</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The buffer pointer.  <a href="#3de1a03e7bc3762ec8ecc0ceb782513d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;size_t&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#53bdc6a00632b48c81098aad91a9fd8d">size</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The buffer size.  <a href="#cdc370d1fa896a5845589e2428b22a7b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;size_t *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#1851639b8f0e53b8e272c806d9fb648b">size_written</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The number of written bytes.  <a href="#8ca97f49c08d7d9534792cd679f2bbc8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#8803fe1047e8bcea9bdfcad0743fa0dd">string</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">String output data.  <a href="#8803fe1047e8bcea9bdfcad0743fa0dd"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">FILE *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#bfe1e82cd5c4a180b1468e65ccfd1c61">file</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">File output data.  <a href="#bfe1e82cd5c4a180b1468e65ccfd1c61"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#1c8f40a58f0a3061449b3fed02be145e">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the buffer.  <a href="#1c8f40a58f0a3061449b3fed02be145e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#42285849529f1b0eb9f4aac2eaef5204">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the buffer.  <a href="#42285849529f1b0eb9f4aac2eaef5204"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#7615ab51145234f467984f3091558852">pointer</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The current position of the buffer.  <a href="#7615ab51145234f467984f3091558852"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#df20e81d4690b86732932aff06a6d2e6">last</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The last filled position of the buffer.  <a href="#df20e81d4690b86732932aff06a6d2e6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#e8913d3c0bf4c987dc452efee2c802e3">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the buffer.  <a href="#e8913d3c0bf4c987dc452efee2c802e3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#bb03bd7a5b832de48f9fbc9512ed7936">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the buffer.  <a href="#bb03bd7a5b832de48f9fbc9512ed7936"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#ed9370f42cea4dff82f96839ce760b5a">pointer</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The current position of the buffer.  <a href="#ed9370f42cea4dff82f96839ce760b5a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#d0c5410fff4602266a0c6e0af730dd70">last</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The last filled position of the buffer.  <a href="#d0c5410fff4602266a0c6e0af730dd70"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__emitter.html#g0889461fa3efe8eee881aef48a4ba6b2">yaml_emitter_state_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#d68af21e510adcfc2db43b31e791efe1">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the stack.  <a href="#d68af21e510adcfc2db43b31e791efe1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__emitter.html#g0889461fa3efe8eee881aef48a4ba6b2">yaml_emitter_state_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#126a19ae360206437647892a344a30f0">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the stack.  <a href="#126a19ae360206437647892a344a30f0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__emitter.html#g0889461fa3efe8eee881aef48a4ba6b2">yaml_emitter_state_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#afa8b6f21022ce2f4cb9b44ad15a535e">top</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The top of the stack.  <a href="#afa8b6f21022ce2f4cb9b44ad15a535e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__event__s.html">yaml_event_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#2c31edecd7f6dfd87fe3f8e12b705884">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the event queue.  <a href="#2c31edecd7f6dfd87fe3f8e12b705884"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__event__s.html">yaml_event_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#55703a15e71c6b9551a2f4feb888bdcb">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the event queue.  <a href="#55703a15e71c6b9551a2f4feb888bdcb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__event__s.html">yaml_event_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#547dfd20576006e606ffb0d8042b4234">head</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The head of the event queue.  <a href="#547dfd20576006e606ffb0d8042b4234"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__event__s.html">yaml_event_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#cafa1e3cb872fa7917217469659fb273">tail</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tail of the event queue.  <a href="#cafa1e3cb872fa7917217469659fb273"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#28ec8053132a8e7cf29df983835754b7">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the stack.  <a href="#28ec8053132a8e7cf29df983835754b7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#6669a94bc18247491e59c709852be0d1">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the stack.  <a href="#6669a94bc18247491e59c709852be0d1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#5779bcbfd04df64e42434b7599332d11">top</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The top of the stack.  <a href="#5779bcbfd04df64e42434b7599332d11"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#94afdd9750b95529bbbbd09456a4391d">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the list.  <a href="#94afdd9750b95529bbbbd09456a4391d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#3b28127063323de1d88fc18cdb6adf8a">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the list.  <a href="#3b28127063323de1d88fc18cdb6adf8a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#8e3f468d814d2aa5e074f7da1648d34a">top</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The top of the list.  <a href="#8e3f468d814d2aa5e074f7da1648d34a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#6f2882bde71e478e29dc5b293def8739">anchor</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The anchor value.  <a href="#6f2882bde71e478e29dc5b293def8739"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#ece73cc234475630032b1c75a735eeb5">anchor_length</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The anchor length.  <a href="#ece73cc234475630032b1c75a735eeb5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1129c6f9ae5cd3b437b8ab8767324f03"></a><!-- doxytag: member="yaml_emitter_s::alias" ref="1129c6f9ae5cd3b437b8ab8767324f03" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#1129c6f9ae5cd3b437b8ab8767324f03">alias</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Is it an alias? <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#7f043a9092eef2d644cc8f1180386239">handle</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag handle.  <a href="#7f043a9092eef2d644cc8f1180386239"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#3552cece6908f99518205e8cbe2c793a">handle_length</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag handle length.  <a href="#3552cece6908f99518205e8cbe2c793a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#d9b61d5e9e05a47b2f873342ab226188">suffix</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag suffix.  <a href="#d9b61d5e9e05a47b2f873342ab226188"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#d83936bbd4b6b77c79555c71cccc8fb5">suffix_length</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag suffix length.  <a href="#d83936bbd4b6b77c79555c71cccc8fb5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#20246ec76d64854ff93629cf1b424d86">value</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The scalar value.  <a href="#20246ec76d64854ff93629cf1b424d86"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#4f72d57ad020803803e78922ecdec580">length</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The scalar length.  <a href="#4f72d57ad020803803e78922ecdec580"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="363a1aaaf512433ee7eab3083428cc70"></a><!-- doxytag: member="yaml_emitter_s::multiline" ref="363a1aaaf512433ee7eab3083428cc70" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#363a1aaaf512433ee7eab3083428cc70">multiline</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Does the scalar contain line breaks? <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fd8496f5bb995bb5aacc349fd6b45bf5"></a><!-- doxytag: member="yaml_emitter_s::flow_plain_allowed" ref="fd8496f5bb995bb5aacc349fd6b45bf5" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#fd8496f5bb995bb5aacc349fd6b45bf5">flow_plain_allowed</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Can the scalar be expessed in the flow plain style? <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5b5f6c9d687d788c8dac86d213ef4c16"></a><!-- doxytag: member="yaml_emitter_s::block_plain_allowed" ref="5b5f6c9d687d788c8dac86d213ef4c16" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#5b5f6c9d687d788c8dac86d213ef4c16">block_plain_allowed</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Can the scalar be expressed in the block plain style? <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3729ff7e7add06a1a1d9067a557a59fc"></a><!-- doxytag: member="yaml_emitter_s::single_quoted_allowed" ref="3729ff7e7add06a1a1d9067a557a59fc" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#3729ff7e7add06a1a1d9067a557a59fc">single_quoted_allowed</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Can the scalar be expressed in the single quoted style? <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="64e05972897d02f606627ef0cf3c7420"></a><!-- doxytag: member="yaml_emitter_s::block_allowed" ref="64e05972897d02f606627ef0cf3c7420" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#64e05972897d02f606627ef0cf3c7420">block_allowed</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Can the scalar be expressed in the literal or folded styles? <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__styles.html#g3fa6405631e1afe5bd5c488a6c5e8065">yaml_scalar_style_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#cd1e83d220103aa24577038cfb1c2d21">style</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The output style.  <a href="#cd1e83d220103aa24577038cfb1c2d21"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#8f00c3c08e0d87bab11e91a4464a50bc">references</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The number of references.  <a href="#8f00c3c08e0d87bab11e91a4464a50bc"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#88154c89db7ec99fb322b1970371c350">anchor</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The anchor id.  <a href="#88154c89db7ec99fb322b1970371c350"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6c3e98c02ffae879717b3d09f9458936"></a><!-- doxytag: member="yaml_emitter_s::serialized" ref="6c3e98c02ffae879717b3d09f9458936" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#6c3e98c02ffae879717b3d09f9458936">serialized</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">If the node has been emitted? <br></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Error handling</div></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__basic.html#g1a449f0c1b023e2ef1a596093c018e73">yaml_error_type_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#fa2d6367a86ae6d43df14e24479bb0a7">error</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Error type.  <a href="#fa2d6367a86ae6d43df14e24479bb0a7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#e076ef7c85ae107a2233dd4206577800">problem</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Error description.  <a href="#e076ef7c85ae107a2233dd4206577800"></a><br></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Writer stuff</div></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__emitter.html#g1669659aacbe631ad406c78fce1f5379">yaml_write_handler_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#efa7e29ba8042ed1d133a02bb368ea3e">write_handler</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Write handler.  <a href="#efa7e29ba8042ed1d133a02bb368ea3e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#6c4fe0176b69da64ac1ddc7e091967e5">write_handler_data</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A pointer for passing to the white handler.  <a href="#6c4fe0176b69da64ac1ddc7e091967e5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>union {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned char *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#db154d3d10b34077792b8e4a0f0596f7">buffer</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The buffer pointer.  <a href="#3de1a03e7bc3762ec8ecc0ceb782513d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size_t&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#53bdc6a00632b48c81098aad91a9fd8d">size</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The buffer size.  <a href="#cdc370d1fa896a5845589e2428b22a7b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size_t *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#1851639b8f0e53b8e272c806d9fb648b">size_written</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The number of written bytes.  <a href="#8ca97f49c08d7d9534792cd679f2bbc8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#8803fe1047e8bcea9bdfcad0743fa0dd">string</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">String output data.  <a href="#9230ae6633cc1c25626194542111a677"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;FILE *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#bfe1e82cd5c4a180b1468e65ccfd1c61">file</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">File output data.  <a href="#32b4e1cc2a64cbe25cf5d657030091a9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#a975acf559cc87d79abdb732c994f56f">output</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Standard (string or file) output data.  <a href="#a975acf559cc87d79abdb732c994f56f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#1c8f40a58f0a3061449b3fed02be145e">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the buffer.  <a href="#7398d07abda1d9b8fe8398060f23dba8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#42285849529f1b0eb9f4aac2eaef5204">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the buffer.  <a href="#600fff3ed7e14d9b97d8f01b525d292d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#7615ab51145234f467984f3091558852">pointer</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The current position of the buffer.  <a href="#9306ca21a7d520e6c78f6f52856305fc"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#df20e81d4690b86732932aff06a6d2e6">last</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The last filled position of the buffer.  <a href="#7b4914b9739829c486e4edfbc7af5aa2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#fb2700e9b866b5be0ff6c7549c719f81">buffer</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The working buffer.  <a href="#fb2700e9b866b5be0ff6c7549c719f81"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;unsigned char *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#e8913d3c0bf4c987dc452efee2c802e3">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the buffer.  <a href="#00989e28160512f41575746a4e8d200a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;unsigned char *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#bb03bd7a5b832de48f9fbc9512ed7936">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the buffer.  <a href="#61de7ca2737085581787e42f2a456e4e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;unsigned char *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#ed9370f42cea4dff82f96839ce760b5a">pointer</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The current position of the buffer.  <a href="#42cd8db55ad7bf5c2966fdf7c2bb5298"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;unsigned char *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#d0c5410fff4602266a0c6e0af730dd70">last</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The last filled position of the buffer.  <a href="#b1a4dcbfcd343482cea5052710fe489b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#6eeffbc9cd5beb89b679740b7f1d6d09">raw_buffer</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The raw buffer.  <a href="#6eeffbc9cd5beb89b679740b7f1d6d09"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__basic.html#g2170996d7e636397b5e6bc0c1b7df7c6">yaml_encoding_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#da17f19fa6248d6ee493684b03700857">encoding</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The stream encoding.  <a href="#da17f19fa6248d6ee493684b03700857"></a><br></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Emitter stuff</div></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cb0259cdc5e2bb23faaf7266496df827"></a><!-- doxytag: member="yaml_emitter_s::canonical" ref="cb0259cdc5e2bb23faaf7266496df827" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#cb0259cdc5e2bb23faaf7266496df827">canonical</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">If the output is in the canonical style? <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#33545f8924be89daf8b81dc905d558c0">best_indent</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The number of indentation spaces.  <a href="#33545f8924be89daf8b81dc905d558c0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#56dde6b352bdf7d4031f89d2b5d704f6">best_width</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The preferred width of the output lines.  <a href="#56dde6b352bdf7d4031f89d2b5d704f6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="76372a2413f71a5b36bf77a58d8f5d40"></a><!-- doxytag: member="yaml_emitter_s::unicode" ref="76372a2413f71a5b36bf77a58d8f5d40" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#76372a2413f71a5b36bf77a58d8f5d40">unicode</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Allow unescaped non-ASCII characters? <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__basic.html#g64d1365e1acd4deeab50d6b48e39cb6d">yaml_break_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#84c1b884d805588495067ee98a8e7c50">line_break</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The preferred line break.  <a href="#84c1b884d805588495067ee98a8e7c50"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="group__emitter.html#g0889461fa3efe8eee881aef48a4ba6b2">yaml_emitter_state_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#d68af21e510adcfc2db43b31e791efe1">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the stack.  <a href="#de26838334fb9d053270d8611c5cea84"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="group__emitter.html#g0889461fa3efe8eee881aef48a4ba6b2">yaml_emitter_state_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#126a19ae360206437647892a344a30f0">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the stack.  <a href="#840ad2f7468a0a4599c92fdb0d8b6c31"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="group__emitter.html#g0889461fa3efe8eee881aef48a4ba6b2">yaml_emitter_state_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#afa8b6f21022ce2f4cb9b44ad15a535e">top</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The top of the stack.  <a href="#8bc41a658885de250cd94ce398b43a34"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#6dc87fbd5b074507e102b967492b135d">states</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The stack of states.  <a href="#6dc87fbd5b074507e102b967492b135d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__emitter.html#g0889461fa3efe8eee881aef48a4ba6b2">yaml_emitter_state_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#29f1d4f27ff9b9616c154f0730dd24ee">state</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The current emitter state.  <a href="#29f1d4f27ff9b9616c154f0730dd24ee"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html">yaml_event_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#2c31edecd7f6dfd87fe3f8e12b705884">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the event queue.  <a href="#758cef2154788e258519da9dc115b236"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html">yaml_event_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#55703a15e71c6b9551a2f4feb888bdcb">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the event queue.  <a href="#558752cda23946ec7c48e89b11d093e5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html">yaml_event_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#547dfd20576006e606ffb0d8042b4234">head</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The head of the event queue.  <a href="#b1319817935c2fdd82d1408118e6b4ee"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html">yaml_event_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#cafa1e3cb872fa7917217469659fb273">tail</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tail of the event queue.  <a href="#45ea42ba05a30f6ea0508dd820d25e7a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#3516b49eb7579e422750a94a9d7c1700">events</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The event queue.  <a href="#3516b49eb7579e422750a94a9d7c1700"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;int *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#28ec8053132a8e7cf29df983835754b7">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the stack.  <a href="#ac045f8171a34981e11ac04b366510a1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;int *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#6669a94bc18247491e59c709852be0d1">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the stack.  <a href="#b899ae5def549dd94f09d57e5de437b0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;int *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#5779bcbfd04df64e42434b7599332d11">top</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The top of the stack.  <a href="#2f4efd2e4cdb064bf686f91962b47141"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#d31c591593ccb78e6b04887bf4f162c8">indents</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The stack of indentation levels.  <a href="#d31c591593ccb78e6b04887bf4f162c8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#94afdd9750b95529bbbbd09456a4391d">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the list.  <a href="#3f974930ae4f9f782c5aaae43be29b3e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#3b28127063323de1d88fc18cdb6adf8a">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the list.  <a href="#ccecc7febcb95d27119e7bc20bed58f5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#8e3f468d814d2aa5e074f7da1648d34a">top</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The top of the list.  <a href="#647c50d3a198f35315150a7abef2a728"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#9dc51f2ccb8a517e2dc029e1af960258">tag_directives</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The list of tag directives.  <a href="#9dc51f2ccb8a517e2dc029e1af960258"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#93a73494a5d62464a67cc71f86ad9728">indent</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The current indentation level.  <a href="#93a73494a5d62464a67cc71f86ad9728"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#50f8e97c4290b83ebd646b4c4f5c5de9">flow_level</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The current flow level.  <a href="#50f8e97c4290b83ebd646b4c4f5c5de9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="70fb5f09cc60de989fbec2868f4db19e"></a><!-- doxytag: member="yaml_emitter_s::root_context" ref="70fb5f09cc60de989fbec2868f4db19e" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#70fb5f09cc60de989fbec2868f4db19e">root_context</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Is it the document root context? <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9d20d55b0914ff81bf0f56e57ca7416e"></a><!-- doxytag: member="yaml_emitter_s::sequence_context" ref="9d20d55b0914ff81bf0f56e57ca7416e" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#9d20d55b0914ff81bf0f56e57ca7416e">sequence_context</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Is it a sequence context? <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5a7527d8da86b28d95ff18b29f9d82f0"></a><!-- doxytag: member="yaml_emitter_s::mapping_context" ref="5a7527d8da86b28d95ff18b29f9d82f0" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#5a7527d8da86b28d95ff18b29f9d82f0">mapping_context</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Is it a mapping context? <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cc0db69cdae44c1385bbb2b6c207371b"></a><!-- doxytag: member="yaml_emitter_s::simple_key_context" ref="cc0db69cdae44c1385bbb2b6c207371b" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#cc0db69cdae44c1385bbb2b6c207371b">simple_key_context</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Is it a simple mapping key context? <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#4fe9295608f19a687e41ec3661383e88">line</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The current line.  <a href="#4fe9295608f19a687e41ec3661383e88"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#678fbbacad5d1f3f9bb7516282888b8a">column</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The current column.  <a href="#678fbbacad5d1f3f9bb7516282888b8a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="160ed0cf1cc6116b65772d14ced2d867"></a><!-- doxytag: member="yaml_emitter_s::whitespace" ref="160ed0cf1cc6116b65772d14ced2d867" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#160ed0cf1cc6116b65772d14ced2d867">whitespace</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">If the last character was a whitespace? <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="407de8ff950b16b4254a381d4e5cea42"></a><!-- doxytag: member="yaml_emitter_s::indention" ref="407de8ff950b16b4254a381d4e5cea42" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#407de8ff950b16b4254a381d4e5cea42">indention</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">If the last character was an indentation character (' ', '-', '?', ':')? <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="65e84454b702622c41a068768c144c51"></a><!-- doxytag: member="yaml_emitter_s::open_ended" ref="65e84454b702622c41a068768c144c51" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#65e84454b702622c41a068768c144c51">open_ended</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">If an explicit document end is required? <br></td></tr>
-<tr><td class="memItemLeft" nowrap>struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#6f2882bde71e478e29dc5b293def8739">anchor</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The anchor value.  <a href="#306b548114f849a1c9d758b57f419466"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;size_t&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#ece73cc234475630032b1c75a735eeb5">anchor_length</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The anchor length.  <a href="#391cb53843f4a8cd9e0dd10c93e9bd7e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#1129c6f9ae5cd3b437b8ab8767324f03">alias</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Is it an alias? <br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#d8883d967ee02e3e15e58bc2533188cc">anchor_data</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Anchor analysis.  <a href="#d8883d967ee02e3e15e58bc2533188cc"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#7f043a9092eef2d644cc8f1180386239">handle</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag handle.  <a href="#909eee205483c2d98a96d7ad8edfc9af"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;size_t&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#3552cece6908f99518205e8cbe2c793a">handle_length</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag handle length.  <a href="#4e1e44c36d58c603bd20f2b7e49ced20"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#d9b61d5e9e05a47b2f873342ab226188">suffix</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag suffix.  <a href="#52a60d9bebe64d3ab58831d89dd7510d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;size_t&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#d83936bbd4b6b77c79555c71cccc8fb5">suffix_length</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag suffix length.  <a href="#641257c4a0031b413f15d149098079d3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#3b947fbbc337d123af10c58abf1353a4">tag_data</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tag analysis.  <a href="#3b947fbbc337d123af10c58abf1353a4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#20246ec76d64854ff93629cf1b424d86">value</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The scalar value.  <a href="#b11c296cbe028e99186cfccdcd527b80"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;size_t&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#4f72d57ad020803803e78922ecdec580">length</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The scalar length.  <a href="#6279bdf68208f9fcdc9f9b982c531fee"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#363a1aaaf512433ee7eab3083428cc70">multiline</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Does the scalar contain line breaks? <br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#fd8496f5bb995bb5aacc349fd6b45bf5">flow_plain_allowed</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Can the scalar be expessed in the flow plain style? <br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#5b5f6c9d687d788c8dac86d213ef4c16">block_plain_allowed</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Can the scalar be expressed in the block plain style? <br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#3729ff7e7add06a1a1d9067a557a59fc">single_quoted_allowed</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Can the scalar be expressed in the single quoted style? <br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#64e05972897d02f606627ef0cf3c7420">block_allowed</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Can the scalar be expressed in the literal or folded styles? <br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="group__styles.html#g3fa6405631e1afe5bd5c488a6c5e8065">yaml_scalar_style_t</a>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#cd1e83d220103aa24577038cfb1c2d21">style</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The output style.  <a href="#bb5a7f2dd34a71a941868847cc543f16"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#c3f80f4cb9c361b5fa4fa8f5cc04dbac">scalar_data</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Scalar analysis.  <a href="#c3f80f4cb9c361b5fa4fa8f5cc04dbac"></a><br></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Dumper stuff</div></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0234d7e9bfbe7cc6e12b60f90f5ec552"></a><!-- doxytag: member="yaml_emitter_s::opened" ref="0234d7e9bfbe7cc6e12b60f90f5ec552" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#0234d7e9bfbe7cc6e12b60f90f5ec552">opened</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">If the stream was already opened? <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="978d894a219686d31d971899e31910cd"></a><!-- doxytag: member="yaml_emitter_s::closed" ref="978d894a219686d31d971899e31910cd" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#978d894a219686d31d971899e31910cd">closed</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">If the stream was already closed? <br></td></tr>
-<tr><td class="memItemLeft" nowrap>struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#8f00c3c08e0d87bab11e91a4464a50bc">references</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The number of references.  <a href="#f94b939c1f14ec749c5136e08feb8471"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#88154c89db7ec99fb322b1970371c350">anchor</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The anchor id.  <a href="#5396aeed3a261b318dff5c88fe79639c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__emitter__s.html#6c3e98c02ffae879717b3d09f9458936">serialized</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">If the node has been emitted? <br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#d4e7a72cb8b1b67373ba6d76a5229e6b">anchors</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The information associated with the document nodes.  <a href="#d4e7a72cb8b1b67373ba6d76a5229e6b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#0cede830c77a15df7f1b73b9023d2d11">last_anchor_id</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The last assigned anchor id.  <a href="#0cede830c77a15df7f1b73b9023d2d11"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__document__s.html">yaml_document_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html#f9cc8801cc9b46a4f45255c67a1574a7">document</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The currently emitted document.  <a href="#f9cc8801cc9b46a4f45255c67a1574a7"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-The emitter structure. 
-<p>
-All members are internal. Manage the structure using the <code>yaml_emitter_</code> family of functions. <hr><h2>Field Documentation</h2>
-<a class="anchor" name="fa2d6367a86ae6d43df14e24479bb0a7"></a><!-- doxytag: member="yaml_emitter_s::error" ref="fa2d6367a86ae6d43df14e24479bb0a7" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#g1a449f0c1b023e2ef1a596093c018e73">yaml_error_type_t</a> <a class="el" href="structyaml__emitter__s.html#fa2d6367a86ae6d43df14e24479bb0a7">yaml_emitter_s::error</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Error type. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="e076ef7c85ae107a2233dd4206577800"></a><!-- doxytag: member="yaml_emitter_s::problem" ref="e076ef7c85ae107a2233dd4206577800" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* <a class="el" href="structyaml__emitter__s.html#e076ef7c85ae107a2233dd4206577800">yaml_emitter_s::problem</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Error description. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="efa7e29ba8042ed1d133a02bb368ea3e"></a><!-- doxytag: member="yaml_emitter_s::write_handler" ref="efa7e29ba8042ed1d133a02bb368ea3e" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__emitter.html#g1669659aacbe631ad406c78fce1f5379">yaml_write_handler_t</a>* <a class="el" href="structyaml__emitter__s.html#efa7e29ba8042ed1d133a02bb368ea3e">yaml_emitter_s::write_handler</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Write handler. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="6c4fe0176b69da64ac1ddc7e091967e5"></a><!-- doxytag: member="yaml_emitter_s::write_handler_data" ref="6c4fe0176b69da64ac1ddc7e091967e5" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void* <a class="el" href="structyaml__emitter__s.html#6c4fe0176b69da64ac1ddc7e091967e5">yaml_emitter_s::write_handler_data</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-A pointer for passing to the white handler. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="db154d3d10b34077792b8e4a0f0596f7"></a><!-- doxytag: member="yaml_emitter_s::buffer" ref="db154d3d10b34077792b8e4a0f0596f7" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned char* <a class="el" href="structyaml__emitter__s.html#db154d3d10b34077792b8e4a0f0596f7">yaml_emitter_s::buffer</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The buffer pointer. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="53bdc6a00632b48c81098aad91a9fd8d"></a><!-- doxytag: member="yaml_emitter_s::size" ref="53bdc6a00632b48c81098aad91a9fd8d" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_t <a class="el" href="structyaml__emitter__s.html#53bdc6a00632b48c81098aad91a9fd8d">yaml_emitter_s::size</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The buffer size. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="1851639b8f0e53b8e272c806d9fb648b"></a><!-- doxytag: member="yaml_emitter_s::size_written" ref="1851639b8f0e53b8e272c806d9fb648b" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_t* <a class="el" href="structyaml__emitter__s.html#1851639b8f0e53b8e272c806d9fb648b">yaml_emitter_s::size_written</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The number of written bytes. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="8803fe1047e8bcea9bdfcad0743fa0dd"></a><!-- doxytag: member="yaml_emitter_s::string" ref="8803fe1047e8bcea9bdfcad0743fa0dd" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__emitter__s.html#8803fe1047e8bcea9bdfcad0743fa0dd">yaml_emitter_s::string</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-String output data. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="bfe1e82cd5c4a180b1468e65ccfd1c61"></a><!-- doxytag: member="yaml_emitter_s::file" ref="bfe1e82cd5c4a180b1468e65ccfd1c61" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">FILE* <a class="el" href="structyaml__emitter__s.html#bfe1e82cd5c4a180b1468e65ccfd1c61">yaml_emitter_s::file</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-File output data. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="a975acf559cc87d79abdb732c994f56f"></a><!-- doxytag: member="yaml_emitter_s::output" ref="a975acf559cc87d79abdb732c994f56f" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">union { ... }   <a class="el" href="structyaml__emitter__s.html#a975acf559cc87d79abdb732c994f56f">yaml_emitter_s::output</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Standard (string or file) output data. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="1c8f40a58f0a3061449b3fed02be145e"></a><!-- doxytag: member="yaml_emitter_s::start" ref="1c8f40a58f0a3061449b3fed02be145e" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a>* <a class="el" href="structyaml__emitter__s.html#1c8f40a58f0a3061449b3fed02be145e">yaml_emitter_s::start</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The beginning of the buffer. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="42285849529f1b0eb9f4aac2eaef5204"></a><!-- doxytag: member="yaml_emitter_s::end" ref="42285849529f1b0eb9f4aac2eaef5204" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a>* <a class="el" href="structyaml__emitter__s.html#42285849529f1b0eb9f4aac2eaef5204">yaml_emitter_s::end</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The end of the buffer. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="7615ab51145234f467984f3091558852"></a><!-- doxytag: member="yaml_emitter_s::pointer" ref="7615ab51145234f467984f3091558852" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a>* <a class="el" href="structyaml__emitter__s.html#7615ab51145234f467984f3091558852">yaml_emitter_s::pointer</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The current position of the buffer. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="df20e81d4690b86732932aff06a6d2e6"></a><!-- doxytag: member="yaml_emitter_s::last" ref="df20e81d4690b86732932aff06a6d2e6" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a>* <a class="el" href="structyaml__emitter__s.html#df20e81d4690b86732932aff06a6d2e6">yaml_emitter_s::last</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The last filled position of the buffer. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="fb2700e9b866b5be0ff6c7549c719f81"></a><!-- doxytag: member="yaml_emitter_s::buffer" ref="fb2700e9b866b5be0ff6c7549c719f81" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__emitter__s.html#db154d3d10b34077792b8e4a0f0596f7">yaml_emitter_s::buffer</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The working buffer. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="e8913d3c0bf4c987dc452efee2c802e3"></a><!-- doxytag: member="yaml_emitter_s::start" ref="e8913d3c0bf4c987dc452efee2c802e3" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned char* <a class="el" href="structyaml__emitter__s.html#1c8f40a58f0a3061449b3fed02be145e">yaml_emitter_s::start</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The beginning of the buffer. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="bb03bd7a5b832de48f9fbc9512ed7936"></a><!-- doxytag: member="yaml_emitter_s::end" ref="bb03bd7a5b832de48f9fbc9512ed7936" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned char* <a class="el" href="structyaml__emitter__s.html#42285849529f1b0eb9f4aac2eaef5204">yaml_emitter_s::end</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The end of the buffer. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="ed9370f42cea4dff82f96839ce760b5a"></a><!-- doxytag: member="yaml_emitter_s::pointer" ref="ed9370f42cea4dff82f96839ce760b5a" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned char* <a class="el" href="structyaml__emitter__s.html#7615ab51145234f467984f3091558852">yaml_emitter_s::pointer</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The current position of the buffer. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="d0c5410fff4602266a0c6e0af730dd70"></a><!-- doxytag: member="yaml_emitter_s::last" ref="d0c5410fff4602266a0c6e0af730dd70" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned char* <a class="el" href="structyaml__emitter__s.html#df20e81d4690b86732932aff06a6d2e6">yaml_emitter_s::last</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The last filled position of the buffer. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="6eeffbc9cd5beb89b679740b7f1d6d09"></a><!-- doxytag: member="yaml_emitter_s::raw_buffer" ref="6eeffbc9cd5beb89b679740b7f1d6d09" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__emitter__s.html#6eeffbc9cd5beb89b679740b7f1d6d09">yaml_emitter_s::raw_buffer</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The raw buffer. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="da17f19fa6248d6ee493684b03700857"></a><!-- doxytag: member="yaml_emitter_s::encoding" ref="da17f19fa6248d6ee493684b03700857" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#g2170996d7e636397b5e6bc0c1b7df7c6">yaml_encoding_t</a> <a class="el" href="structyaml__emitter__s.html#da17f19fa6248d6ee493684b03700857">yaml_emitter_s::encoding</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The stream encoding. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="33545f8924be89daf8b81dc905d558c0"></a><!-- doxytag: member="yaml_emitter_s::best_indent" ref="33545f8924be89daf8b81dc905d558c0" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int <a class="el" href="structyaml__emitter__s.html#33545f8924be89daf8b81dc905d558c0">yaml_emitter_s::best_indent</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The number of indentation spaces. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="56dde6b352bdf7d4031f89d2b5d704f6"></a><!-- doxytag: member="yaml_emitter_s::best_width" ref="56dde6b352bdf7d4031f89d2b5d704f6" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int <a class="el" href="structyaml__emitter__s.html#56dde6b352bdf7d4031f89d2b5d704f6">yaml_emitter_s::best_width</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The preferred width of the output lines. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="84c1b884d805588495067ee98a8e7c50"></a><!-- doxytag: member="yaml_emitter_s::line_break" ref="84c1b884d805588495067ee98a8e7c50" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#g64d1365e1acd4deeab50d6b48e39cb6d">yaml_break_t</a> <a class="el" href="structyaml__emitter__s.html#84c1b884d805588495067ee98a8e7c50">yaml_emitter_s::line_break</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The preferred line break. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="d68af21e510adcfc2db43b31e791efe1"></a><!-- doxytag: member="yaml_emitter_s::start" ref="d68af21e510adcfc2db43b31e791efe1" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__emitter.html#g0889461fa3efe8eee881aef48a4ba6b2">yaml_emitter_state_t</a>* <a class="el" href="structyaml__emitter__s.html#1c8f40a58f0a3061449b3fed02be145e">yaml_emitter_s::start</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The beginning of the stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="126a19ae360206437647892a344a30f0"></a><!-- doxytag: member="yaml_emitter_s::end" ref="126a19ae360206437647892a344a30f0" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__emitter.html#g0889461fa3efe8eee881aef48a4ba6b2">yaml_emitter_state_t</a>* <a class="el" href="structyaml__emitter__s.html#42285849529f1b0eb9f4aac2eaef5204">yaml_emitter_s::end</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The end of the stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="afa8b6f21022ce2f4cb9b44ad15a535e"></a><!-- doxytag: member="yaml_emitter_s::top" ref="afa8b6f21022ce2f4cb9b44ad15a535e" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__emitter.html#g0889461fa3efe8eee881aef48a4ba6b2">yaml_emitter_state_t</a>* <a class="el" href="structyaml__emitter__s.html#afa8b6f21022ce2f4cb9b44ad15a535e">yaml_emitter_s::top</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The top of the stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="6dc87fbd5b074507e102b967492b135d"></a><!-- doxytag: member="yaml_emitter_s::states" ref="6dc87fbd5b074507e102b967492b135d" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__emitter__s.html#6dc87fbd5b074507e102b967492b135d">yaml_emitter_s::states</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The stack of states. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="29f1d4f27ff9b9616c154f0730dd24ee"></a><!-- doxytag: member="yaml_emitter_s::state" ref="29f1d4f27ff9b9616c154f0730dd24ee" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__emitter.html#g0889461fa3efe8eee881aef48a4ba6b2">yaml_emitter_state_t</a> <a class="el" href="structyaml__emitter__s.html#29f1d4f27ff9b9616c154f0730dd24ee">yaml_emitter_s::state</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The current emitter state. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="2c31edecd7f6dfd87fe3f8e12b705884"></a><!-- doxytag: member="yaml_emitter_s::start" ref="2c31edecd7f6dfd87fe3f8e12b705884" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__event__s.html">yaml_event_t</a>* <a class="el" href="structyaml__emitter__s.html#1c8f40a58f0a3061449b3fed02be145e">yaml_emitter_s::start</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The beginning of the event queue. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="55703a15e71c6b9551a2f4feb888bdcb"></a><!-- doxytag: member="yaml_emitter_s::end" ref="55703a15e71c6b9551a2f4feb888bdcb" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__event__s.html">yaml_event_t</a>* <a class="el" href="structyaml__emitter__s.html#42285849529f1b0eb9f4aac2eaef5204">yaml_emitter_s::end</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The end of the event queue. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="547dfd20576006e606ffb0d8042b4234"></a><!-- doxytag: member="yaml_emitter_s::head" ref="547dfd20576006e606ffb0d8042b4234" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__event__s.html">yaml_event_t</a>* <a class="el" href="structyaml__emitter__s.html#547dfd20576006e606ffb0d8042b4234">yaml_emitter_s::head</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The head of the event queue. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="cafa1e3cb872fa7917217469659fb273"></a><!-- doxytag: member="yaml_emitter_s::tail" ref="cafa1e3cb872fa7917217469659fb273" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__event__s.html">yaml_event_t</a>* <a class="el" href="structyaml__emitter__s.html#cafa1e3cb872fa7917217469659fb273">yaml_emitter_s::tail</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The tail of the event queue. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="3516b49eb7579e422750a94a9d7c1700"></a><!-- doxytag: member="yaml_emitter_s::events" ref="3516b49eb7579e422750a94a9d7c1700" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__emitter__s.html#3516b49eb7579e422750a94a9d7c1700">yaml_emitter_s::events</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The event queue. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="28ec8053132a8e7cf29df983835754b7"></a><!-- doxytag: member="yaml_emitter_s::start" ref="28ec8053132a8e7cf29df983835754b7" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int* <a class="el" href="structyaml__emitter__s.html#1c8f40a58f0a3061449b3fed02be145e">yaml_emitter_s::start</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The beginning of the stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="6669a94bc18247491e59c709852be0d1"></a><!-- doxytag: member="yaml_emitter_s::end" ref="6669a94bc18247491e59c709852be0d1" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int* <a class="el" href="structyaml__emitter__s.html#42285849529f1b0eb9f4aac2eaef5204">yaml_emitter_s::end</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The end of the stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="5779bcbfd04df64e42434b7599332d11"></a><!-- doxytag: member="yaml_emitter_s::top" ref="5779bcbfd04df64e42434b7599332d11" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int* <a class="el" href="structyaml__emitter__s.html#afa8b6f21022ce2f4cb9b44ad15a535e">yaml_emitter_s::top</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The top of the stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="d31c591593ccb78e6b04887bf4f162c8"></a><!-- doxytag: member="yaml_emitter_s::indents" ref="d31c591593ccb78e6b04887bf4f162c8" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__emitter__s.html#d31c591593ccb78e6b04887bf4f162c8">yaml_emitter_s::indents</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The stack of indentation levels. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="94afdd9750b95529bbbbd09456a4391d"></a><!-- doxytag: member="yaml_emitter_s::start" ref="94afdd9750b95529bbbbd09456a4391d" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a>* <a class="el" href="structyaml__emitter__s.html#1c8f40a58f0a3061449b3fed02be145e">yaml_emitter_s::start</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The beginning of the list. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="3b28127063323de1d88fc18cdb6adf8a"></a><!-- doxytag: member="yaml_emitter_s::end" ref="3b28127063323de1d88fc18cdb6adf8a" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a>* <a class="el" href="structyaml__emitter__s.html#42285849529f1b0eb9f4aac2eaef5204">yaml_emitter_s::end</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The end of the list. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="8e3f468d814d2aa5e074f7da1648d34a"></a><!-- doxytag: member="yaml_emitter_s::top" ref="8e3f468d814d2aa5e074f7da1648d34a" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a>* <a class="el" href="structyaml__emitter__s.html#afa8b6f21022ce2f4cb9b44ad15a535e">yaml_emitter_s::top</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The top of the list. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="9dc51f2ccb8a517e2dc029e1af960258"></a><!-- doxytag: member="yaml_emitter_s::tag_directives" ref="9dc51f2ccb8a517e2dc029e1af960258" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__emitter__s.html#9dc51f2ccb8a517e2dc029e1af960258">yaml_emitter_s::tag_directives</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The list of tag directives. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="93a73494a5d62464a67cc71f86ad9728"></a><!-- doxytag: member="yaml_emitter_s::indent" ref="93a73494a5d62464a67cc71f86ad9728" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int <a class="el" href="structyaml__emitter__s.html#93a73494a5d62464a67cc71f86ad9728">yaml_emitter_s::indent</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The current indentation level. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="50f8e97c4290b83ebd646b4c4f5c5de9"></a><!-- doxytag: member="yaml_emitter_s::flow_level" ref="50f8e97c4290b83ebd646b4c4f5c5de9" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int <a class="el" href="structyaml__emitter__s.html#50f8e97c4290b83ebd646b4c4f5c5de9">yaml_emitter_s::flow_level</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The current flow level. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="4fe9295608f19a687e41ec3661383e88"></a><!-- doxytag: member="yaml_emitter_s::line" ref="4fe9295608f19a687e41ec3661383e88" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int <a class="el" href="structyaml__emitter__s.html#4fe9295608f19a687e41ec3661383e88">yaml_emitter_s::line</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The current line. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="678fbbacad5d1f3f9bb7516282888b8a"></a><!-- doxytag: member="yaml_emitter_s::column" ref="678fbbacad5d1f3f9bb7516282888b8a" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int <a class="el" href="structyaml__emitter__s.html#678fbbacad5d1f3f9bb7516282888b8a">yaml_emitter_s::column</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The current column. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="6f2882bde71e478e29dc5b293def8739"></a><!-- doxytag: member="yaml_emitter_s::anchor" ref="6f2882bde71e478e29dc5b293def8739" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a>* <a class="el" href="structyaml__emitter__s.html#6f2882bde71e478e29dc5b293def8739">yaml_emitter_s::anchor</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The anchor value. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="ece73cc234475630032b1c75a735eeb5"></a><!-- doxytag: member="yaml_emitter_s::anchor_length" ref="ece73cc234475630032b1c75a735eeb5" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_t <a class="el" href="structyaml__emitter__s.html#ece73cc234475630032b1c75a735eeb5">yaml_emitter_s::anchor_length</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The anchor length. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="d8883d967ee02e3e15e58bc2533188cc"></a><!-- doxytag: member="yaml_emitter_s::anchor_data" ref="d8883d967ee02e3e15e58bc2533188cc" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__emitter__s.html#d8883d967ee02e3e15e58bc2533188cc">yaml_emitter_s::anchor_data</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Anchor analysis. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="7f043a9092eef2d644cc8f1180386239"></a><!-- doxytag: member="yaml_emitter_s::handle" ref="7f043a9092eef2d644cc8f1180386239" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a>* <a class="el" href="structyaml__emitter__s.html#7f043a9092eef2d644cc8f1180386239">yaml_emitter_s::handle</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The tag handle. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="3552cece6908f99518205e8cbe2c793a"></a><!-- doxytag: member="yaml_emitter_s::handle_length" ref="3552cece6908f99518205e8cbe2c793a" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_t <a class="el" href="structyaml__emitter__s.html#3552cece6908f99518205e8cbe2c793a">yaml_emitter_s::handle_length</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The tag handle length. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="d9b61d5e9e05a47b2f873342ab226188"></a><!-- doxytag: member="yaml_emitter_s::suffix" ref="d9b61d5e9e05a47b2f873342ab226188" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a>* <a class="el" href="structyaml__emitter__s.html#d9b61d5e9e05a47b2f873342ab226188">yaml_emitter_s::suffix</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The tag suffix. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="d83936bbd4b6b77c79555c71cccc8fb5"></a><!-- doxytag: member="yaml_emitter_s::suffix_length" ref="d83936bbd4b6b77c79555c71cccc8fb5" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_t <a class="el" href="structyaml__emitter__s.html#d83936bbd4b6b77c79555c71cccc8fb5">yaml_emitter_s::suffix_length</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The tag suffix length. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="3b947fbbc337d123af10c58abf1353a4"></a><!-- doxytag: member="yaml_emitter_s::tag_data" ref="3b947fbbc337d123af10c58abf1353a4" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__emitter__s.html#3b947fbbc337d123af10c58abf1353a4">yaml_emitter_s::tag_data</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Tag analysis. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="20246ec76d64854ff93629cf1b424d86"></a><!-- doxytag: member="yaml_emitter_s::value" ref="20246ec76d64854ff93629cf1b424d86" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a>* <a class="el" href="structyaml__emitter__s.html#20246ec76d64854ff93629cf1b424d86">yaml_emitter_s::value</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The scalar value. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="4f72d57ad020803803e78922ecdec580"></a><!-- doxytag: member="yaml_emitter_s::length" ref="4f72d57ad020803803e78922ecdec580" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_t <a class="el" href="structyaml__emitter__s.html#4f72d57ad020803803e78922ecdec580">yaml_emitter_s::length</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The scalar length. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="cd1e83d220103aa24577038cfb1c2d21"></a><!-- doxytag: member="yaml_emitter_s::style" ref="cd1e83d220103aa24577038cfb1c2d21" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__styles.html#g3fa6405631e1afe5bd5c488a6c5e8065">yaml_scalar_style_t</a> <a class="el" href="structyaml__emitter__s.html#cd1e83d220103aa24577038cfb1c2d21">yaml_emitter_s::style</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The output style. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="c3f80f4cb9c361b5fa4fa8f5cc04dbac"></a><!-- doxytag: member="yaml_emitter_s::scalar_data" ref="c3f80f4cb9c361b5fa4fa8f5cc04dbac" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__emitter__s.html#c3f80f4cb9c361b5fa4fa8f5cc04dbac">yaml_emitter_s::scalar_data</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Scalar analysis. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="8f00c3c08e0d87bab11e91a4464a50bc"></a><!-- doxytag: member="yaml_emitter_s::references" ref="8f00c3c08e0d87bab11e91a4464a50bc" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int <a class="el" href="structyaml__emitter__s.html#8f00c3c08e0d87bab11e91a4464a50bc">yaml_emitter_s::references</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The number of references. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="88154c89db7ec99fb322b1970371c350"></a><!-- doxytag: member="yaml_emitter_s::anchor" ref="88154c89db7ec99fb322b1970371c350" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int <a class="el" href="structyaml__emitter__s.html#6f2882bde71e478e29dc5b293def8739">yaml_emitter_s::anchor</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The anchor id. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="d4e7a72cb8b1b67373ba6d76a5229e6b"></a><!-- doxytag: member="yaml_emitter_s::anchors" ref="d4e7a72cb8b1b67373ba6d76a5229e6b" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }  * <a class="el" href="structyaml__emitter__s.html#d4e7a72cb8b1b67373ba6d76a5229e6b">yaml_emitter_s::anchors</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The information associated with the document nodes. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="0cede830c77a15df7f1b73b9023d2d11"></a><!-- doxytag: member="yaml_emitter_s::last_anchor_id" ref="0cede830c77a15df7f1b73b9023d2d11" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int <a class="el" href="structyaml__emitter__s.html#0cede830c77a15df7f1b73b9023d2d11">yaml_emitter_s::last_anchor_id</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The last assigned anchor id. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="f9cc8801cc9b46a4f45255c67a1574a7"></a><!-- doxytag: member="yaml_emitter_s::document" ref="f9cc8801cc9b46a4f45255c67a1574a7" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__document__s.html">yaml_document_t</a>* <a class="el" href="structyaml__emitter__s.html#f9cc8801cc9b46a4f45255c67a1574a7">yaml_emitter_s::document</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The currently emitted document. 
-<p>
-
-</div>
-</div><p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="yaml_8h.html">yaml.h</a></ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/structyaml__event__s.html b/yaml-0.1.3/doc/html/structyaml__event__s.html
deleted file mode 100644
index 8ec4d23..0000000
--- a/yaml-0.1.3/doc/html/structyaml__event__s.html
+++ /dev/null
@@ -1,577 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: yaml_event_s Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>yaml_event_s Struct Reference<br>
-<small>
-[<a class="el" href="group__events.html">Events</a>]</small>
-</h1><!-- doxytag: class="yaml_event_s" -->The event structure.  
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;yaml.h&gt;</code>
-<p>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__events.html#g8934661be36bd7c9d17a8af69eff89a1">yaml_event_type_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__event__s.html#ff08bc3df4859d5b3a804e8c011cac51">type</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The event type.  <a href="#ff08bc3df4859d5b3a804e8c011cac51"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>union {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#g2170996d7e636397b5e6bc0c1b7df7c6">yaml_encoding_t</a>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#92139ba6ae79089fd9a2f5f4aeaf733f">encoding</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The document encoding.  <a href="#013185a12bac356d960b026398e504a2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#18946df9b7c815dd7fb30103c02a9e24">stream_start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The stream parameters (for <code>YAML_STREAM_START_EVENT</code>).  <a href="#931502d93bdae03a900c977029b4a56f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__version__directive__s.html">yaml_version_directive_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#5cef7981358ecefdf9d4780b3eacd39b">version_directive</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The version directive.  <a href="#bbdad7315d78b67762a00e39f9548300"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#74d7f521a559305585009ab503bee16b">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the tag directives list.  <a href="#c4401e622798ad9d55fa7751c39213bb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#115b4a9797f3a72cd78d42c85100317c">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the tag directives list.  <a href="#f8a40e02650b213a3f672e13ab30905f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#162ce89a77e706d68649d40e1a520e1f">tag_directives</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The list of tag directives.  <a href="#976963ca65664c9689832d580ca618e1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#3cbb10e276d55890ee2fa802dd6290e1">implicit</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Is the document indicator implicit? <br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#ed593fadbeb898d6d90b0c62522a82cc">document_start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The document parameters (for <code>YAML_DOCUMENT_START_EVENT</code>).  <a href="#99b5c90f624956aee82e27832cd99a87"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#3cbb10e276d55890ee2fa802dd6290e1">implicit</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Is the document end indicator implicit? <br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#cffec5f24c01bb6bfb0c93a9bf1a803e">document_end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The document end parameters (for <code>YAML_DOCUMENT_END_EVENT</code>).  <a href="#4fb77d8fb2c2f70cb291d63a85ca67a8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#aa97ab683d28e5f611042d0fbd929125">anchor</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The anchor.  <a href="#8bfecafc16192db72b8fc23957d8f7c4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#c21f0f1e12207b8fd4f02496259f6c0b">alias</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The alias parameters (for <code>YAML_ALIAS_EVENT</code>).  <a href="#c57c1949fb11f8910f1c38e325a865e6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#aa97ab683d28e5f611042d0fbd929125">anchor</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The anchor.  <a href="#62ab48de40bbad9d93ab3077d66290b3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#4daf9ed2683d79f2be7e89ca7d06801c">tag</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag.  <a href="#182bc9a40e2cc684a33ad29b9113a657"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#23436bdddb447d0fc217bab5c5b04a36">value</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The scalar value.  <a href="#b3c914b40eec83c01bcc44f3ed1a93ff"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size_t&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#15618ee917746d28d97ad8eb9639e141">length</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The length of the scalar value.  <a href="#876e51f851a4a0c4c0870a64ba4dce27"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#c3600acbcc6b4787f1ec3511976a3151">plain_implicit</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Is the tag optional for the plain style? <br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#9ce2441d08d9cf6a1bf9f28f5ee17f68">quoted_implicit</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Is the tag optional for any non-plain style? <br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__styles.html#g3fa6405631e1afe5bd5c488a6c5e8065">yaml_scalar_style_t</a>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#b107f895698f70560a5c344fc60ff498">style</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The scalar style.  <a href="#1a8a9b1523fa3ceb39cf81a2aeda94f8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#3753b4c5d10040d75f7c7f4b56c42549">scalar</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The scalar parameters (for <code>YAML_SCALAR_EVENT</code>).  <a href="#e3ab6ac6c25ab055b22b3e07fd45ffcb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#aa97ab683d28e5f611042d0fbd929125">anchor</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The anchor.  <a href="#eecd79ca32723810c8f2aebb2f56ef4b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#4daf9ed2683d79f2be7e89ca7d06801c">tag</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag.  <a href="#f4ac72fd34161d29e50a14336d813243"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#3cbb10e276d55890ee2fa802dd6290e1">implicit</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Is the tag optional? <br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__styles.html#g58a1123d271e56c72de6abf852ac4dc2">yaml_sequence_style_t</a>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#2ac1305583a8e7e2247738116bca6b3b">style</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The sequence style.  <a href="#bf427cb1bad9525ede42029e0cf674df"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#632895e022fbf29ab24a816893a8580f">sequence_start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The sequence parameters (for <code>YAML_SEQUENCE_START_EVENT</code>).  <a href="#c71c77bfdef4f1b5a81ddfea2b80513e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#aa97ab683d28e5f611042d0fbd929125">anchor</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The anchor.  <a href="#9b573224a1dabcf1ea7b322b563db34f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#4daf9ed2683d79f2be7e89ca7d06801c">tag</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag.  <a href="#7ca2a6e4ddc12781ae6e0c488f8a1fd6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#3cbb10e276d55890ee2fa802dd6290e1">implicit</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Is the tag optional? <br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__styles.html#gb47523846a5c5960e07367a28ea9750a">yaml_mapping_style_t</a>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#682a60e9a72e100357a38dd6434ad4f9">style</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The mapping style.  <a href="#b87b863976e8e9af5624ae26a39c1b94"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__event__s.html#361b28413783f92797e6bfe03e9abaa1">mapping_start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The mapping parameters (for <code>YAML_MAPPING_START_EVENT</code>).  <a href="#7e8558f16c82ae63517f6f5c84726bc8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__event__s.html#0b8f9cce08e49459e4bab89035dbf6c6">data</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The event data.  <a href="#0b8f9cce08e49459e4bab89035dbf6c6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__event__s.html#eaf86eb588e75232e1b73e8213eb3e31">start_mark</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the event.  <a href="#eaf86eb588e75232e1b73e8213eb3e31"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__event__s.html#9307f91473094c229738b03d223bc4ba">end_mark</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the event.  <a href="#9307f91473094c229738b03d223bc4ba"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-The event structure. 
-<p>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="ff08bc3df4859d5b3a804e8c011cac51"></a><!-- doxytag: member="yaml_event_s::type" ref="ff08bc3df4859d5b3a804e8c011cac51" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__events.html#g8934661be36bd7c9d17a8af69eff89a1">yaml_event_type_t</a> <a class="el" href="structyaml__event__s.html#ff08bc3df4859d5b3a804e8c011cac51">yaml_event_s::type</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The event type. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="92139ba6ae79089fd9a2f5f4aeaf733f"></a><!-- doxytag: member="yaml_event_s::encoding" ref="92139ba6ae79089fd9a2f5f4aeaf733f" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#g2170996d7e636397b5e6bc0c1b7df7c6">yaml_encoding_t</a> <a class="el" href="structyaml__event__s.html#92139ba6ae79089fd9a2f5f4aeaf733f">yaml_event_s::encoding</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The document encoding. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="18946df9b7c815dd7fb30103c02a9e24"></a><!-- doxytag: member="yaml_event_s::stream_start" ref="18946df9b7c815dd7fb30103c02a9e24" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__event__s.html#18946df9b7c815dd7fb30103c02a9e24">yaml_event_s::stream_start</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The stream parameters (for <code>YAML_STREAM_START_EVENT</code>). 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="5cef7981358ecefdf9d4780b3eacd39b"></a><!-- doxytag: member="yaml_event_s::version_directive" ref="5cef7981358ecefdf9d4780b3eacd39b" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__version__directive__s.html">yaml_version_directive_t</a>* <a class="el" href="structyaml__event__s.html#5cef7981358ecefdf9d4780b3eacd39b">yaml_event_s::version_directive</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The version directive. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="74d7f521a559305585009ab503bee16b"></a><!-- doxytag: member="yaml_event_s::start" ref="74d7f521a559305585009ab503bee16b" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a>* <a class="el" href="structyaml__event__s.html#74d7f521a559305585009ab503bee16b">yaml_event_s::start</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The beginning of the tag directives list. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="115b4a9797f3a72cd78d42c85100317c"></a><!-- doxytag: member="yaml_event_s::end" ref="115b4a9797f3a72cd78d42c85100317c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a>* <a class="el" href="structyaml__event__s.html#115b4a9797f3a72cd78d42c85100317c">yaml_event_s::end</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The end of the tag directives list. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="162ce89a77e706d68649d40e1a520e1f"></a><!-- doxytag: member="yaml_event_s::tag_directives" ref="162ce89a77e706d68649d40e1a520e1f" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... } ::@16  <a class="el" href="structyaml__event__s.html#162ce89a77e706d68649d40e1a520e1f">yaml_event_s::tag_directives</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The list of tag directives. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="3cbb10e276d55890ee2fa802dd6290e1"></a><!-- doxytag: member="yaml_event_s::implicit" ref="3cbb10e276d55890ee2fa802dd6290e1" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int <a class="el" href="structyaml__event__s.html#3cbb10e276d55890ee2fa802dd6290e1">yaml_event_s::implicit</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Is the document indicator implicit? 
-<p>
-Is the tag optional?<p>
-Is the document end indicator implicit? 
-</div>
-</div><p>
-<a class="anchor" name="ed593fadbeb898d6d90b0c62522a82cc"></a><!-- doxytag: member="yaml_event_s::document_start" ref="ed593fadbeb898d6d90b0c62522a82cc" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__event__s.html#ed593fadbeb898d6d90b0c62522a82cc">yaml_event_s::document_start</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The document parameters (for <code>YAML_DOCUMENT_START_EVENT</code>). 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="cffec5f24c01bb6bfb0c93a9bf1a803e"></a><!-- doxytag: member="yaml_event_s::document_end" ref="cffec5f24c01bb6bfb0c93a9bf1a803e" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__event__s.html#cffec5f24c01bb6bfb0c93a9bf1a803e">yaml_event_s::document_end</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The document end parameters (for <code>YAML_DOCUMENT_END_EVENT</code>). 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="aa97ab683d28e5f611042d0fbd929125"></a><!-- doxytag: member="yaml_event_s::anchor" ref="aa97ab683d28e5f611042d0fbd929125" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a>* <a class="el" href="structyaml__event__s.html#aa97ab683d28e5f611042d0fbd929125">yaml_event_s::anchor</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The anchor. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="c21f0f1e12207b8fd4f02496259f6c0b"></a><!-- doxytag: member="yaml_event_s::alias" ref="c21f0f1e12207b8fd4f02496259f6c0b" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__event__s.html#c21f0f1e12207b8fd4f02496259f6c0b">yaml_event_s::alias</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The alias parameters (for <code>YAML_ALIAS_EVENT</code>). 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="4daf9ed2683d79f2be7e89ca7d06801c"></a><!-- doxytag: member="yaml_event_s::tag" ref="4daf9ed2683d79f2be7e89ca7d06801c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a>* <a class="el" href="structyaml__event__s.html#4daf9ed2683d79f2be7e89ca7d06801c">yaml_event_s::tag</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The tag. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="23436bdddb447d0fc217bab5c5b04a36"></a><!-- doxytag: member="yaml_event_s::value" ref="23436bdddb447d0fc217bab5c5b04a36" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a>* <a class="el" href="structyaml__event__s.html#23436bdddb447d0fc217bab5c5b04a36">yaml_event_s::value</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The scalar value. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="15618ee917746d28d97ad8eb9639e141"></a><!-- doxytag: member="yaml_event_s::length" ref="15618ee917746d28d97ad8eb9639e141" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_t <a class="el" href="structyaml__event__s.html#15618ee917746d28d97ad8eb9639e141">yaml_event_s::length</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The length of the scalar value. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="b107f895698f70560a5c344fc60ff498"></a><!-- doxytag: member="yaml_event_s::style" ref="b107f895698f70560a5c344fc60ff498" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__styles.html#g3fa6405631e1afe5bd5c488a6c5e8065">yaml_scalar_style_t</a> <a class="el" href="structyaml__event__s.html#b107f895698f70560a5c344fc60ff498">yaml_event_s::style</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The scalar style. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="3753b4c5d10040d75f7c7f4b56c42549"></a><!-- doxytag: member="yaml_event_s::scalar" ref="3753b4c5d10040d75f7c7f4b56c42549" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__event__s.html#3753b4c5d10040d75f7c7f4b56c42549">yaml_event_s::scalar</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The scalar parameters (for <code>YAML_SCALAR_EVENT</code>). 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="2ac1305583a8e7e2247738116bca6b3b"></a><!-- doxytag: member="yaml_event_s::style" ref="2ac1305583a8e7e2247738116bca6b3b" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__styles.html#g58a1123d271e56c72de6abf852ac4dc2">yaml_sequence_style_t</a> <a class="el" href="structyaml__event__s.html#b107f895698f70560a5c344fc60ff498">yaml_event_s::style</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The sequence style. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="632895e022fbf29ab24a816893a8580f"></a><!-- doxytag: member="yaml_event_s::sequence_start" ref="632895e022fbf29ab24a816893a8580f" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__event__s.html#632895e022fbf29ab24a816893a8580f">yaml_event_s::sequence_start</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The sequence parameters (for <code>YAML_SEQUENCE_START_EVENT</code>). 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="682a60e9a72e100357a38dd6434ad4f9"></a><!-- doxytag: member="yaml_event_s::style" ref="682a60e9a72e100357a38dd6434ad4f9" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__styles.html#gb47523846a5c5960e07367a28ea9750a">yaml_mapping_style_t</a> <a class="el" href="structyaml__event__s.html#b107f895698f70560a5c344fc60ff498">yaml_event_s::style</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The mapping style. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="361b28413783f92797e6bfe03e9abaa1"></a><!-- doxytag: member="yaml_event_s::mapping_start" ref="361b28413783f92797e6bfe03e9abaa1" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__event__s.html#361b28413783f92797e6bfe03e9abaa1">yaml_event_s::mapping_start</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The mapping parameters (for <code>YAML_MAPPING_START_EVENT</code>). 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="0b8f9cce08e49459e4bab89035dbf6c6"></a><!-- doxytag: member="yaml_event_s::data" ref="0b8f9cce08e49459e4bab89035dbf6c6" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">union { ... }   <a class="el" href="structyaml__event__s.html#0b8f9cce08e49459e4bab89035dbf6c6">yaml_event_s::data</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The event data. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="eaf86eb588e75232e1b73e8213eb3e31"></a><!-- doxytag: member="yaml_event_s::start_mark" ref="eaf86eb588e75232e1b73e8213eb3e31" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a> <a class="el" href="structyaml__event__s.html#eaf86eb588e75232e1b73e8213eb3e31">yaml_event_s::start_mark</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The beginning of the event. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="9307f91473094c229738b03d223bc4ba"></a><!-- doxytag: member="yaml_event_s::end_mark" ref="9307f91473094c229738b03d223bc4ba" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a> <a class="el" href="structyaml__event__s.html#9307f91473094c229738b03d223bc4ba">yaml_event_s::end_mark</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The end of the event. 
-<p>
-
-</div>
-</div><p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="yaml_8h.html">yaml.h</a></ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/structyaml__mark__s.html b/yaml-0.1.3/doc/html/structyaml__mark__s.html
deleted file mode 100644
index 516bb8f..0000000
--- a/yaml-0.1.3/doc/html/structyaml__mark__s.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: yaml_mark_s Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>yaml_mark_s Struct Reference<br>
-<small>
-[<a class="el" href="group__basic.html">Basic Types</a>]</small>
-</h1><!-- doxytag: class="yaml_mark_s" -->The pointer position.  
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;yaml.h&gt;</code>
-<p>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__mark__s.html#525306fb424a79f0b0d5a7d3990aa596">index</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The position index.  <a href="#525306fb424a79f0b0d5a7d3990aa596"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__mark__s.html#55952e426fc8a5f180a5e9c907ca926c">line</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The position line.  <a href="#55952e426fc8a5f180a5e9c907ca926c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__mark__s.html#aa18357a6fb2bb377b969ce9ff589797">column</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The position column.  <a href="#aa18357a6fb2bb377b969ce9ff589797"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-The pointer position. 
-<p>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="525306fb424a79f0b0d5a7d3990aa596"></a><!-- doxytag: member="yaml_mark_s::index" ref="525306fb424a79f0b0d5a7d3990aa596" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_t <a class="el" href="structyaml__mark__s.html#525306fb424a79f0b0d5a7d3990aa596">yaml_mark_s::index</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The position index. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="55952e426fc8a5f180a5e9c907ca926c"></a><!-- doxytag: member="yaml_mark_s::line" ref="55952e426fc8a5f180a5e9c907ca926c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_t <a class="el" href="structyaml__mark__s.html#55952e426fc8a5f180a5e9c907ca926c">yaml_mark_s::line</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The position line. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="aa18357a6fb2bb377b969ce9ff589797"></a><!-- doxytag: member="yaml_mark_s::column" ref="aa18357a6fb2bb377b969ce9ff589797" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_t <a class="el" href="structyaml__mark__s.html#aa18357a6fb2bb377b969ce9ff589797">yaml_mark_s::column</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The position column. 
-<p>
-
-</div>
-</div><p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="yaml_8h.html">yaml.h</a></ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/structyaml__node__pair__s.html b/yaml-0.1.3/doc/html/structyaml__node__pair__s.html
deleted file mode 100644
index e72f646..0000000
--- a/yaml-0.1.3/doc/html/structyaml__node__pair__s.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: yaml_node_pair_s Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>yaml_node_pair_s Struct Reference<br>
-<small>
-[<a class="el" href="group__nodes.html">Nodes</a>]</small>
-</h1><!-- doxytag: class="yaml_node_pair_s" -->An element of a mapping node.  
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;yaml.h&gt;</code>
-<p>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__node__pair__s.html#c83746eb40b6b3a84f6da3143658ed4e">key</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The key of the element.  <a href="#c83746eb40b6b3a84f6da3143658ed4e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__node__pair__s.html#56c1de2c11d509462d1bf03803bb8ab1">value</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The value of the element.  <a href="#56c1de2c11d509462d1bf03803bb8ab1"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-An element of a mapping node. 
-<p>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="c83746eb40b6b3a84f6da3143658ed4e"></a><!-- doxytag: member="yaml_node_pair_s::key" ref="c83746eb40b6b3a84f6da3143658ed4e" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int <a class="el" href="structyaml__node__pair__s.html#c83746eb40b6b3a84f6da3143658ed4e">yaml_node_pair_s::key</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The key of the element. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="56c1de2c11d509462d1bf03803bb8ab1"></a><!-- doxytag: member="yaml_node_pair_s::value" ref="56c1de2c11d509462d1bf03803bb8ab1" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int <a class="el" href="structyaml__node__pair__s.html#56c1de2c11d509462d1bf03803bb8ab1">yaml_node_pair_s::value</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The value of the element. 
-<p>
-
-</div>
-</div><p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="yaml_8h.html">yaml.h</a></ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/structyaml__node__s.html b/yaml-0.1.3/doc/html/structyaml__node__s.html
deleted file mode 100644
index a484eb8..0000000
--- a/yaml-0.1.3/doc/html/structyaml__node__s.html
+++ /dev/null
@@ -1,480 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: yaml_node_s Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>yaml_node_s Struct Reference<br>
-<small>
-[<a class="el" href="group__nodes.html">Nodes</a>]</small>
-</h1><!-- doxytag: class="yaml_node_s" -->The node structure.  
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;yaml.h&gt;</code>
-<p>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__nodes.html#gbe020d2fc42d3e896549e9f97da622d2">yaml_node_type_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__node__s.html#1db4ea72e13be65ec42339ce47d19669">type</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The node type.  <a href="#1db4ea72e13be65ec42339ce47d19669"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__node__s.html#a753358ea6d9d221b7b188832d47fefa">tag</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The node tag.  <a href="#a753358ea6d9d221b7b188832d47fefa"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>union {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__node__s.html#0d444412a29609d62699267ae72f971d">value</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The scalar value.  <a href="#129e3e8d569291c7be00c9ca698a51b9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size_t&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__node__s.html#d90dd9926d9debbaa48eb5339bd9fc36">length</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The length of the scalar value.  <a href="#030f5cbf551b7c11eb470caeb6cbe01f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__styles.html#g3fa6405631e1afe5bd5c488a6c5e8065">yaml_scalar_style_t</a>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__node__s.html#362960375516e77a130c412ef10ef55d">style</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The scalar style.  <a href="#42314e28159129ed4c3411d2ff7221f8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__node__s.html#688583a2649848aed700d7e07d9efac9">scalar</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The scalar parameters (for <code>YAML_SCALAR_NODE</code>).  <a href="#5b05d7f483231f7de3c2fa2cebc15f43"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__nodes.html#g7cc3581582e778b00c04e99cd3656860">yaml_node_item_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__node__s.html#2e1001a0a7b068d4b2543a93d4cf60d4">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the stack.  <a href="#697b2d4bec074d91ae1c45ba172fa89b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__nodes.html#g7cc3581582e778b00c04e99cd3656860">yaml_node_item_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__node__s.html#c9b3d891f9fcd5462289823716deca0e">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the stack.  <a href="#c7aadd4c56fe1c09455c032197ee2b82"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__nodes.html#g7cc3581582e778b00c04e99cd3656860">yaml_node_item_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__node__s.html#510326726569a06a11119f12649787cf">top</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The top of the stack.  <a href="#764ac986c17f493a98cfe3c7c3fe39df"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__node__s.html#6b340541cc012ac5aacdcaa46ced097a">items</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The stack of sequence items.  <a href="#ba71ba0e031e83136e606757b2829965"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__styles.html#g58a1123d271e56c72de6abf852ac4dc2">yaml_sequence_style_t</a>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__node__s.html#242be04ec3709138264175e3e5b50dbe">style</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The sequence style.  <a href="#03bb5c4857ad1de915a31a6f40c0324b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__node__s.html#fe215962139fac93b965cc2acd71452b">sequence</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The sequence parameters (for <code>YAML_SEQUENCE_NODE</code>).  <a href="#4a8564158549b14870e4dd71117b8e61"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__node__pair__s.html">yaml_node_pair_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__node__s.html#82afddfe1cf7f1a346d931ad4896d3de">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the stack.  <a href="#ec3734538b28c3bb0159ea91007f7e7c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__node__pair__s.html">yaml_node_pair_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__node__s.html#1827ba7f3e7f7e94171fa20ade25345d">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the stack.  <a href="#5385026145b3bf6f1cc9591c4c1f1eb2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__node__pair__s.html">yaml_node_pair_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__node__s.html#a420f88720907fe02b1d1595c9351d59">top</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The top of the stack.  <a href="#72efb491e6e94bde61fae8aef806112c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__node__s.html#830a080bbed021eb230ef644e4680909">pairs</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The stack of mapping pairs (key, value).  <a href="#962258fb088b42d9a7267129e3e30b92"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__styles.html#gb47523846a5c5960e07367a28ea9750a">yaml_mapping_style_t</a>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__node__s.html#5b80d97f64e2867927404fedb65949c6">style</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The mapping style.  <a href="#103b4594b31715ab28e6aa36a63eb555"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__node__s.html#b18dc5c573885a08a92e113dcb7fb361">mapping</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The mapping parameters (for <code>YAML_MAPPING_NODE</code>).  <a href="#7e6db76f6fcdd6588bb0ddf83bc4c4ea"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__node__s.html#7e1be921e921f2d0911e450a063b1344">data</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The node data.  <a href="#7e1be921e921f2d0911e450a063b1344"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__node__s.html#c17afa3b3a9ff4703bb4983163bfae5c">start_mark</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the node.  <a href="#c17afa3b3a9ff4703bb4983163bfae5c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__node__s.html#63144671fd16f94f72c6d537360f7328">end_mark</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the node.  <a href="#63144671fd16f94f72c6d537360f7328"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-The node structure. 
-<p>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="1db4ea72e13be65ec42339ce47d19669"></a><!-- doxytag: member="yaml_node_s::type" ref="1db4ea72e13be65ec42339ce47d19669" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__nodes.html#gbe020d2fc42d3e896549e9f97da622d2">yaml_node_type_t</a> <a class="el" href="structyaml__node__s.html#1db4ea72e13be65ec42339ce47d19669">yaml_node_s::type</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The node type. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="a753358ea6d9d221b7b188832d47fefa"></a><!-- doxytag: member="yaml_node_s::tag" ref="a753358ea6d9d221b7b188832d47fefa" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a>* <a class="el" href="structyaml__node__s.html#a753358ea6d9d221b7b188832d47fefa">yaml_node_s::tag</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The node tag. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="0d444412a29609d62699267ae72f971d"></a><!-- doxytag: member="yaml_node_s::value" ref="0d444412a29609d62699267ae72f971d" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a>* <a class="el" href="structyaml__node__s.html#0d444412a29609d62699267ae72f971d">yaml_node_s::value</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The scalar value. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="d90dd9926d9debbaa48eb5339bd9fc36"></a><!-- doxytag: member="yaml_node_s::length" ref="d90dd9926d9debbaa48eb5339bd9fc36" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_t <a class="el" href="structyaml__node__s.html#d90dd9926d9debbaa48eb5339bd9fc36">yaml_node_s::length</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The length of the scalar value. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="362960375516e77a130c412ef10ef55d"></a><!-- doxytag: member="yaml_node_s::style" ref="362960375516e77a130c412ef10ef55d" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__styles.html#g3fa6405631e1afe5bd5c488a6c5e8065">yaml_scalar_style_t</a> <a class="el" href="structyaml__node__s.html#362960375516e77a130c412ef10ef55d">yaml_node_s::style</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The scalar style. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="688583a2649848aed700d7e07d9efac9"></a><!-- doxytag: member="yaml_node_s::scalar" ref="688583a2649848aed700d7e07d9efac9" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__node__s.html#688583a2649848aed700d7e07d9efac9">yaml_node_s::scalar</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The scalar parameters (for <code>YAML_SCALAR_NODE</code>). 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="2e1001a0a7b068d4b2543a93d4cf60d4"></a><!-- doxytag: member="yaml_node_s::start" ref="2e1001a0a7b068d4b2543a93d4cf60d4" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__nodes.html#g7cc3581582e778b00c04e99cd3656860">yaml_node_item_t</a>* <a class="el" href="structyaml__node__s.html#2e1001a0a7b068d4b2543a93d4cf60d4">yaml_node_s::start</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The beginning of the stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="c9b3d891f9fcd5462289823716deca0e"></a><!-- doxytag: member="yaml_node_s::end" ref="c9b3d891f9fcd5462289823716deca0e" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__nodes.html#g7cc3581582e778b00c04e99cd3656860">yaml_node_item_t</a>* <a class="el" href="structyaml__node__s.html#c9b3d891f9fcd5462289823716deca0e">yaml_node_s::end</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The end of the stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="510326726569a06a11119f12649787cf"></a><!-- doxytag: member="yaml_node_s::top" ref="510326726569a06a11119f12649787cf" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__nodes.html#g7cc3581582e778b00c04e99cd3656860">yaml_node_item_t</a>* <a class="el" href="structyaml__node__s.html#510326726569a06a11119f12649787cf">yaml_node_s::top</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The top of the stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="6b340541cc012ac5aacdcaa46ced097a"></a><!-- doxytag: member="yaml_node_s::items" ref="6b340541cc012ac5aacdcaa46ced097a" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... } ::@21  <a class="el" href="structyaml__node__s.html#6b340541cc012ac5aacdcaa46ced097a">yaml_node_s::items</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The stack of sequence items. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="242be04ec3709138264175e3e5b50dbe"></a><!-- doxytag: member="yaml_node_s::style" ref="242be04ec3709138264175e3e5b50dbe" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__styles.html#g58a1123d271e56c72de6abf852ac4dc2">yaml_sequence_style_t</a> <a class="el" href="structyaml__node__s.html#362960375516e77a130c412ef10ef55d">yaml_node_s::style</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The sequence style. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="fe215962139fac93b965cc2acd71452b"></a><!-- doxytag: member="yaml_node_s::sequence" ref="fe215962139fac93b965cc2acd71452b" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__node__s.html#fe215962139fac93b965cc2acd71452b">yaml_node_s::sequence</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The sequence parameters (for <code>YAML_SEQUENCE_NODE</code>). 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="82afddfe1cf7f1a346d931ad4896d3de"></a><!-- doxytag: member="yaml_node_s::start" ref="82afddfe1cf7f1a346d931ad4896d3de" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__node__pair__s.html">yaml_node_pair_t</a>* <a class="el" href="structyaml__node__s.html#2e1001a0a7b068d4b2543a93d4cf60d4">yaml_node_s::start</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The beginning of the stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="1827ba7f3e7f7e94171fa20ade25345d"></a><!-- doxytag: member="yaml_node_s::end" ref="1827ba7f3e7f7e94171fa20ade25345d" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__node__pair__s.html">yaml_node_pair_t</a>* <a class="el" href="structyaml__node__s.html#c9b3d891f9fcd5462289823716deca0e">yaml_node_s::end</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The end of the stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="a420f88720907fe02b1d1595c9351d59"></a><!-- doxytag: member="yaml_node_s::top" ref="a420f88720907fe02b1d1595c9351d59" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__node__pair__s.html">yaml_node_pair_t</a>* <a class="el" href="structyaml__node__s.html#510326726569a06a11119f12649787cf">yaml_node_s::top</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The top of the stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="830a080bbed021eb230ef644e4680909"></a><!-- doxytag: member="yaml_node_s::pairs" ref="830a080bbed021eb230ef644e4680909" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... } ::@22  <a class="el" href="structyaml__node__s.html#830a080bbed021eb230ef644e4680909">yaml_node_s::pairs</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The stack of mapping pairs (key, value). 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="5b80d97f64e2867927404fedb65949c6"></a><!-- doxytag: member="yaml_node_s::style" ref="5b80d97f64e2867927404fedb65949c6" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__styles.html#gb47523846a5c5960e07367a28ea9750a">yaml_mapping_style_t</a> <a class="el" href="structyaml__node__s.html#362960375516e77a130c412ef10ef55d">yaml_node_s::style</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The mapping style. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="b18dc5c573885a08a92e113dcb7fb361"></a><!-- doxytag: member="yaml_node_s::mapping" ref="b18dc5c573885a08a92e113dcb7fb361" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__node__s.html#b18dc5c573885a08a92e113dcb7fb361">yaml_node_s::mapping</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The mapping parameters (for <code>YAML_MAPPING_NODE</code>). 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="7e1be921e921f2d0911e450a063b1344"></a><!-- doxytag: member="yaml_node_s::data" ref="7e1be921e921f2d0911e450a063b1344" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">union { ... }   <a class="el" href="structyaml__node__s.html#7e1be921e921f2d0911e450a063b1344">yaml_node_s::data</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The node data. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="c17afa3b3a9ff4703bb4983163bfae5c"></a><!-- doxytag: member="yaml_node_s::start_mark" ref="c17afa3b3a9ff4703bb4983163bfae5c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a> <a class="el" href="structyaml__node__s.html#c17afa3b3a9ff4703bb4983163bfae5c">yaml_node_s::start_mark</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The beginning of the node. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="63144671fd16f94f72c6d537360f7328"></a><!-- doxytag: member="yaml_node_s::end_mark" ref="63144671fd16f94f72c6d537360f7328" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a> <a class="el" href="structyaml__node__s.html#63144671fd16f94f72c6d537360f7328">yaml_node_s::end_mark</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The end of the node. 
-<p>
-
-</div>
-</div><p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="yaml_8h.html">yaml.h</a></ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/structyaml__parser__s.html b/yaml-0.1.3/doc/html/structyaml__parser__s.html
deleted file mode 100644
index 539cfef..0000000
--- a/yaml-0.1.3/doc/html/structyaml__parser__s.html
+++ /dev/null
@@ -1,1453 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: yaml_parser_s Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>yaml_parser_s Struct Reference<br>
-<small>
-[<a class="el" href="group__parser.html">Parser Definitions</a>]</small>
-</h1><!-- doxytag: class="yaml_parser_s" -->The parser structure.  
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;yaml.h&gt;</code>
-<p>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#8cdb2fed4bb17b1d62d29fa06c53fef6">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The string start pointer.  <a href="#8cdb2fed4bb17b1d62d29fa06c53fef6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#ad74ffeb7f2eef0a12e34b0aac263ff3">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The string end pointer.  <a href="#ad74ffeb7f2eef0a12e34b0aac263ff3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#3406d2ba7e969c09344d4ced8c855007">current</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The string current position.  <a href="#3406d2ba7e969c09344d4ced8c855007"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;const unsigned char *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#8cdb2fed4bb17b1d62d29fa06c53fef6">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The string start pointer.  <a href="#917d69ec7b8bf2d95eb95ac82949b8eb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;const unsigned char *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#ad74ffeb7f2eef0a12e34b0aac263ff3">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The string end pointer.  <a href="#efdaf06b21521014c01a958aa1cd1682"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;const unsigned char *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#3406d2ba7e969c09344d4ced8c855007">current</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The string current position.  <a href="#27dbd51d479c482a03e4c5d70c4bcee3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#44fa7ca68030680244f3743ce5e35702">string</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">String input data.  <a href="#44fa7ca68030680244f3743ce5e35702"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">FILE *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#e69c2974e3c4c37e941a0e1971be15a9">file</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">File input data.  <a href="#e69c2974e3c4c37e941a0e1971be15a9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#5cdddcbd18566acc760a660a88f93ffd">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the buffer.  <a href="#5cdddcbd18566acc760a660a88f93ffd"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#6ff1f802eb95bc45f13e8e73ec009828">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the buffer.  <a href="#6ff1f802eb95bc45f13e8e73ec009828"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#8199466e3578374b3f984b6c0c4e2ae4">pointer</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The current position of the buffer.  <a href="#8199466e3578374b3f984b6c0c4e2ae4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#ea4d8da24939825b2fadd368a71ec7de">last</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The last filled position of the buffer.  <a href="#ea4d8da24939825b2fadd368a71ec7de"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#6c08a94c21dfe1611c0d89aef0d3c46d">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the buffer.  <a href="#6c08a94c21dfe1611c0d89aef0d3c46d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#a768a9c29ae2c3015fdb84ea313844e2">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the buffer.  <a href="#a768a9c29ae2c3015fdb84ea313844e2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#bea626790abfbcaeeb72a3772dc69e43">pointer</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The current position of the buffer.  <a href="#bea626790abfbcaeeb72a3772dc69e43"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#3ad1ccaf979092ece82bc981c5a22fb0">last</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The last filled position of the buffer.  <a href="#3ad1ccaf979092ece82bc981c5a22fb0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__token__s.html">yaml_token_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#5f33f5c8f19c1c124cba4857ab2a05c7">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the tokens queue.  <a href="#5f33f5c8f19c1c124cba4857ab2a05c7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__token__s.html">yaml_token_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#41594b6495f4d31edb977cafb8cbaf78">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the tokens queue.  <a href="#41594b6495f4d31edb977cafb8cbaf78"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__token__s.html">yaml_token_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#a1c7a1248ca22159a3e60ba45b386507">head</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The head of the tokens queue.  <a href="#a1c7a1248ca22159a3e60ba45b386507"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__token__s.html">yaml_token_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#22ad26583d8d1264e982188358aa79b6">tail</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tail of the tokens queue.  <a href="#22ad26583d8d1264e982188358aa79b6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#b7208590a6852001ff8e4343a97b0c24">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the stack.  <a href="#b7208590a6852001ff8e4343a97b0c24"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#6d8295bd62c7bb7be9486a1b4d71e736">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the stack.  <a href="#6d8295bd62c7bb7be9486a1b4d71e736"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#9f1f879ba84bc51fa8feb1f47190aa23">top</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The top of the stack.  <a href="#9f1f879ba84bc51fa8feb1f47190aa23"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__simple__key__s.html">yaml_simple_key_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#c311a6d962e0f67dd11759b8999630c6">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the stack.  <a href="#c311a6d962e0f67dd11759b8999630c6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__simple__key__s.html">yaml_simple_key_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#e8416ffcb48c78a575ee21872d5aa698">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the stack.  <a href="#e8416ffcb48c78a575ee21872d5aa698"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__simple__key__s.html">yaml_simple_key_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#e610673669f06d46146198a346796276">top</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The top of the stack.  <a href="#e610673669f06d46146198a346796276"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__parser.html#g52b56d3e3cee0f9ba460978802a8c83b">yaml_parser_state_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#dfdc33f6f53dce4bee87f11821d879b7">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the stack.  <a href="#dfdc33f6f53dce4bee87f11821d879b7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__parser.html#g52b56d3e3cee0f9ba460978802a8c83b">yaml_parser_state_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#211a0aedc964ba8cd07cb7875faa464b">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the stack.  <a href="#211a0aedc964ba8cd07cb7875faa464b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__parser.html#g52b56d3e3cee0f9ba460978802a8c83b">yaml_parser_state_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#f3eecdcdeeb183d16e4219749620df0c">top</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The top of the stack.  <a href="#f3eecdcdeeb183d16e4219749620df0c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#b5a3789882819f2fd69f2cd9deaac8f6">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the stack.  <a href="#b5a3789882819f2fd69f2cd9deaac8f6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#ad019da255ea73adf31d4b1aeac86bb2">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the stack.  <a href="#ad019da255ea73adf31d4b1aeac86bb2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#b2678112fd2eaa8f588f2d6217aabc9d">top</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The top of the stack.  <a href="#b2678112fd2eaa8f588f2d6217aabc9d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#3614f6d6e673e8177e4555c9ecf830fb">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the list.  <a href="#3614f6d6e673e8177e4555c9ecf830fb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#a7fdc1ff8342636119934ac824a2ecc8">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the list.  <a href="#a7fdc1ff8342636119934ac824a2ecc8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#490eddbfcc27787e47de631a3d2e09a8">top</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The top of the list.  <a href="#490eddbfcc27787e47de631a3d2e09a8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__alias__data__s.html">yaml_alias_data_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#b9eddd3a112c3a4547bf87f6936aba94">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the list.  <a href="#b9eddd3a112c3a4547bf87f6936aba94"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__alias__data__s.html">yaml_alias_data_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#4011d41483171958bbf0b5124bde97c8">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the list.  <a href="#4011d41483171958bbf0b5124bde97c8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__alias__data__s.html">yaml_alias_data_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#24a3f3138b44de1914a3e54dbe0aeff7">top</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The top of the list.  <a href="#24a3f3138b44de1914a3e54dbe0aeff7"></a><br></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Error handling</div></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__basic.html#g1a449f0c1b023e2ef1a596093c018e73">yaml_error_type_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#6c5c3488ff22c8a4d234ca8587fa1472">error</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Error type.  <a href="#6c5c3488ff22c8a4d234ca8587fa1472"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#3dd8a43294cd420a433595a7a7d6e73d">problem</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Error description.  <a href="#3dd8a43294cd420a433595a7a7d6e73d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#e2d62a2ad45671c6dd89e18fb7c1c5bd">problem_offset</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The byte about which the problem occured.  <a href="#e2d62a2ad45671c6dd89e18fb7c1c5bd"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#8694691b20824f6595873b728cb3bc0f">problem_value</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The problematic value (<code>-1</code> is none).  <a href="#8694691b20824f6595873b728cb3bc0f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#595b5412d39a4a9e441e5ad34fb059d9">problem_mark</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The problem position.  <a href="#595b5412d39a4a9e441e5ad34fb059d9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#6779b67a23bbf7c401e4257d5875ae6b">context</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The error context.  <a href="#6779b67a23bbf7c401e4257d5875ae6b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#ce259eec6e570f94b98b252e1a632e88">context_mark</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The context position.  <a href="#ce259eec6e570f94b98b252e1a632e88"></a><br></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Reader stuff</div></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__parser.html#g4982f7e4e001ddb47d2819f38f0cd9d6">yaml_read_handler_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#8c3af47a7a0750d437cba34699fcad30">read_handler</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read handler.  <a href="#8c3af47a7a0750d437cba34699fcad30"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#11f265cd495e814c8ee7d3dd78ff2ca9">read_handler_data</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A pointer for passing to the read handler.  <a href="#11f265cd495e814c8ee7d3dd78ff2ca9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>union {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const unsigned char *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#8cdb2fed4bb17b1d62d29fa06c53fef6">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The string start pointer.  <a href="#917d69ec7b8bf2d95eb95ac82949b8eb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const unsigned char *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#ad74ffeb7f2eef0a12e34b0aac263ff3">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The string end pointer.  <a href="#efdaf06b21521014c01a958aa1cd1682"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const unsigned char *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#3406d2ba7e969c09344d4ced8c855007">current</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The string current position.  <a href="#27dbd51d479c482a03e4c5d70c4bcee3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#44fa7ca68030680244f3743ce5e35702">string</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">String input data.  <a href="#15e40a0a535b6d08adaf2e36f24801d1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;FILE *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#e69c2974e3c4c37e941a0e1971be15a9">file</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">File input data.  <a href="#f7582f2e8015c799563716efe4f5ba92"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#e800ef7fd42ad8bcbb69b116da3a7f53">input</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Standard (string or file) input data.  <a href="#e800ef7fd42ad8bcbb69b116da3a7f53"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6129a99d45aee14ec705aa54dbb493b7"></a><!-- doxytag: member="yaml_parser_s::eof" ref="6129a99d45aee14ec705aa54dbb493b7" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#6129a99d45aee14ec705aa54dbb493b7">eof</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">EOF flag. <br></td></tr>
-<tr><td class="memItemLeft" nowrap>struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#5cdddcbd18566acc760a660a88f93ffd">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the buffer.  <a href="#754fc810d477eda536aa816d7eab06fb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#6ff1f802eb95bc45f13e8e73ec009828">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the buffer.  <a href="#a27dbc630815a7110088665718e0bf3d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#8199466e3578374b3f984b6c0c4e2ae4">pointer</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The current position of the buffer.  <a href="#410567a7cb8a361468cead3eb95093cb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#ea4d8da24939825b2fadd368a71ec7de">last</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The last filled position of the buffer.  <a href="#6c1f1411c139b2bed24fee71d3a1ca3f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#fc56b6252bd75ec87edec5c80a5c733e">buffer</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The working buffer.  <a href="#fc56b6252bd75ec87edec5c80a5c733e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d1392f74681fd839482d0b87ca2e404e"></a><!-- doxytag: member="yaml_parser_s::unread" ref="d1392f74681fd839482d0b87ca2e404e" args="" -->
-size_t&nbsp;</td><td class="memItemRight" valign="bottom"><b>unread</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap>struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;unsigned char *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#6c08a94c21dfe1611c0d89aef0d3c46d">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the buffer.  <a href="#edf3b5f414a6c1df5eb8f25b50323ed5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;unsigned char *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#a768a9c29ae2c3015fdb84ea313844e2">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the buffer.  <a href="#ab1fb17696066bc6e6a86fcfd61fec7d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;unsigned char *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#bea626790abfbcaeeb72a3772dc69e43">pointer</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The current position of the buffer.  <a href="#dc5049ff2c3c75d492069afbe187591b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;unsigned char *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#3ad1ccaf979092ece82bc981c5a22fb0">last</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The last filled position of the buffer.  <a href="#f971bd8ebe03ea5aa29c666fc63c71b4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#e3e8481ceabdbf6796a7dc6265f740ac">raw_buffer</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The raw buffer.  <a href="#e3e8481ceabdbf6796a7dc6265f740ac"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__basic.html#g2170996d7e636397b5e6bc0c1b7df7c6">yaml_encoding_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#4f062e9d1fb1082bbf3996e46214905a">encoding</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The input encoding.  <a href="#4f062e9d1fb1082bbf3996e46214905a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#04a7ba684ce49b2300c236c561439b13">offset</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The offset of the current position (in bytes).  <a href="#04a7ba684ce49b2300c236c561439b13"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#aeeb58dc348e6e6f89d6a7c8fea8f734">mark</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The mark of the current position.  <a href="#aeeb58dc348e6e6f89d6a7c8fea8f734"></a><br></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Scanner stuff</div></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7fecde5abcce11406c271f7db08f7a05"></a><!-- doxytag: member="yaml_parser_s::stream_start_produced" ref="7fecde5abcce11406c271f7db08f7a05" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#7fecde5abcce11406c271f7db08f7a05">stream_start_produced</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Have we started to scan the input stream? <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="63ccf04d623f36c04b62cfd1fc6fccb5"></a><!-- doxytag: member="yaml_parser_s::stream_end_produced" ref="63ccf04d623f36c04b62cfd1fc6fccb5" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#63ccf04d623f36c04b62cfd1fc6fccb5">stream_end_produced</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Have we reached the end of the input stream? <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#6a4bbbd3f58533e0969b7218c1e73fd4">flow_level</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The number of unclosed '[' and '{' indicators.  <a href="#6a4bbbd3f58533e0969b7218c1e73fd4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__token__s.html">yaml_token_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#5f33f5c8f19c1c124cba4857ab2a05c7">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the tokens queue.  <a href="#398979c6802f361b972114e64b3933dc"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__token__s.html">yaml_token_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#41594b6495f4d31edb977cafb8cbaf78">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the tokens queue.  <a href="#b52d88c1f49b15a6dff8f276e7e96676"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__token__s.html">yaml_token_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#a1c7a1248ca22159a3e60ba45b386507">head</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The head of the tokens queue.  <a href="#3c021f66f6d1872ca203369622db8189"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__token__s.html">yaml_token_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#22ad26583d8d1264e982188358aa79b6">tail</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tail of the tokens queue.  <a href="#41621dbf1b65ea0fca7989724c1d7bb8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#96d39b8333411d741ee1c13aa4141682">tokens</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tokens queue.  <a href="#96d39b8333411d741ee1c13aa4141682"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#7358e72ad071fec3185a833a3a245690">tokens_parsed</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The number of tokens fetched from the queue.  <a href="#7358e72ad071fec3185a833a3a245690"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9b7d951a1195653cc109c1c54b4dacdc"></a><!-- doxytag: member="yaml_parser_s::token_available" ref="9b7d951a1195653cc109c1c54b4dacdc" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><b>token_available</b></td></tr>
-
-<tr><td class="memItemLeft" nowrap>struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;int *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#b7208590a6852001ff8e4343a97b0c24">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the stack.  <a href="#d8930fabc062aba6c048050afcfa8665"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;int *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#6d8295bd62c7bb7be9486a1b4d71e736">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the stack.  <a href="#f7a29cbe360c7adef57b316b3e362a66"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;int *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#9f1f879ba84bc51fa8feb1f47190aa23">top</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The top of the stack.  <a href="#b82a778fa039e3612d4f9b3600d5b8e3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#2e29feac36a89f644d9640d44df62b74">indents</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The indentation levels stack.  <a href="#2e29feac36a89f644d9640d44df62b74"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#bad00703b649df32ee0d7b00b2f10403">indent</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The current indentation level.  <a href="#bad00703b649df32ee0d7b00b2f10403"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cc85a7bfddc7ae9114cf115e43c89126"></a><!-- doxytag: member="yaml_parser_s::simple_key_allowed" ref="cc85a7bfddc7ae9114cf115e43c89126" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#cc85a7bfddc7ae9114cf115e43c89126">simple_key_allowed</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">May a simple key occur at the current position? <br></td></tr>
-<tr><td class="memItemLeft" nowrap>struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__simple__key__s.html">yaml_simple_key_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#c311a6d962e0f67dd11759b8999630c6">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the stack.  <a href="#149f68df721666407bb5e35693d9a5a5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__simple__key__s.html">yaml_simple_key_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#e8416ffcb48c78a575ee21872d5aa698">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the stack.  <a href="#37e33bbc9d8c66e35276ae66f62ded0e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__simple__key__s.html">yaml_simple_key_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#e610673669f06d46146198a346796276">top</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The top of the stack.  <a href="#78a87753d7f3a8ef82062c7d545cea36"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#d5ce7de476c58fb6e1fdabbcc1c51659">simple_keys</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The stack of simple keys.  <a href="#d5ce7de476c58fb6e1fdabbcc1c51659"></a><br></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Parser stuff</div></td></tr>
-<tr><td class="memItemLeft" nowrap>struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="group__parser.html#g52b56d3e3cee0f9ba460978802a8c83b">yaml_parser_state_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#dfdc33f6f53dce4bee87f11821d879b7">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the stack.  <a href="#ff3bd9eda1dc5744ef385427b33d070b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="group__parser.html#g52b56d3e3cee0f9ba460978802a8c83b">yaml_parser_state_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#211a0aedc964ba8cd07cb7875faa464b">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the stack.  <a href="#044da90adcbc3f4b56856f2e26ffaf64"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="group__parser.html#g52b56d3e3cee0f9ba460978802a8c83b">yaml_parser_state_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#f3eecdcdeeb183d16e4219749620df0c">top</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The top of the stack.  <a href="#8a4875ddd92bb9a7142beaa05669b5a2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#57aa3c5fbfcaed8c17e046f0778c92bf">states</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The parser states stack.  <a href="#57aa3c5fbfcaed8c17e046f0778c92bf"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__parser.html#g52b56d3e3cee0f9ba460978802a8c83b">yaml_parser_state_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#069d39cdf587ac2188e69d8fb018be64">state</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The current parser state.  <a href="#069d39cdf587ac2188e69d8fb018be64"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__mark__s.html">yaml_mark_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#b5a3789882819f2fd69f2cd9deaac8f6">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the stack.  <a href="#bef6aed11c6526d05c7575e562948915"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__mark__s.html">yaml_mark_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#ad019da255ea73adf31d4b1aeac86bb2">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the stack.  <a href="#a66c38fe46cb14e862741aab8d696311"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__mark__s.html">yaml_mark_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#b2678112fd2eaa8f588f2d6217aabc9d">top</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The top of the stack.  <a href="#c82516bc0f45826a7be94a242cc1dbad"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#d78837ae36e35d523e02c43d1ae3f30e">marks</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The stack of marks.  <a href="#d78837ae36e35d523e02c43d1ae3f30e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#3614f6d6e673e8177e4555c9ecf830fb">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the list.  <a href="#6d97015f8ca612a32a0029a073edce5c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#a7fdc1ff8342636119934ac824a2ecc8">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the list.  <a href="#1621ed29a3d6cfd7bd44ee76691caec7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#490eddbfcc27787e47de631a3d2e09a8">top</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The top of the list.  <a href="#06ccdaa94cc87f56746798d540ca9919"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#9bdfc1888d4e30ffb43146377d44fba0">tag_directives</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The list of TAG directives.  <a href="#9bdfc1888d4e30ffb43146377d44fba0"></a><br></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Dumper stuff</div></td></tr>
-<tr><td class="memItemLeft" nowrap>struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__alias__data__s.html">yaml_alias_data_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#b9eddd3a112c3a4547bf87f6936aba94">start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the list.  <a href="#dcc74689dfe672eb17e2649d19da06f8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__alias__data__s.html">yaml_alias_data_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#4011d41483171958bbf0b5124bde97c8">end</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the list.  <a href="#b59275099ba800aa08f7e7f6a533008d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__alias__data__s.html">yaml_alias_data_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__parser__s.html#24a3f3138b44de1914a3e54dbe0aeff7">top</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The top of the list.  <a href="#e87562ed404237349e2aae8076eedcab"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#0c10698207d727f9e5d9ced627d130ef">aliases</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The alias data.  <a href="#0c10698207d727f9e5d9ced627d130ef"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__document__s.html">yaml_document_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html#c3dad5822f49d86cfddc2e5e415a158c">document</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The currently parsed document.  <a href="#c3dad5822f49d86cfddc2e5e415a158c"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-The parser structure. 
-<p>
-All members are internal. Manage the structure using the <code>yaml_parser_</code> family of functions. <hr><h2>Field Documentation</h2>
-<a class="anchor" name="6c5c3488ff22c8a4d234ca8587fa1472"></a><!-- doxytag: member="yaml_parser_s::error" ref="6c5c3488ff22c8a4d234ca8587fa1472" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#g1a449f0c1b023e2ef1a596093c018e73">yaml_error_type_t</a> <a class="el" href="structyaml__parser__s.html#6c5c3488ff22c8a4d234ca8587fa1472">yaml_parser_s::error</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Error type. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="3dd8a43294cd420a433595a7a7d6e73d"></a><!-- doxytag: member="yaml_parser_s::problem" ref="3dd8a43294cd420a433595a7a7d6e73d" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* <a class="el" href="structyaml__parser__s.html#3dd8a43294cd420a433595a7a7d6e73d">yaml_parser_s::problem</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Error description. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="e2d62a2ad45671c6dd89e18fb7c1c5bd"></a><!-- doxytag: member="yaml_parser_s::problem_offset" ref="e2d62a2ad45671c6dd89e18fb7c1c5bd" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_t <a class="el" href="structyaml__parser__s.html#e2d62a2ad45671c6dd89e18fb7c1c5bd">yaml_parser_s::problem_offset</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The byte about which the problem occured. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="8694691b20824f6595873b728cb3bc0f"></a><!-- doxytag: member="yaml_parser_s::problem_value" ref="8694691b20824f6595873b728cb3bc0f" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int <a class="el" href="structyaml__parser__s.html#8694691b20824f6595873b728cb3bc0f">yaml_parser_s::problem_value</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The problematic value (<code>-1</code> is none). 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="595b5412d39a4a9e441e5ad34fb059d9"></a><!-- doxytag: member="yaml_parser_s::problem_mark" ref="595b5412d39a4a9e441e5ad34fb059d9" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a> <a class="el" href="structyaml__parser__s.html#595b5412d39a4a9e441e5ad34fb059d9">yaml_parser_s::problem_mark</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The problem position. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="6779b67a23bbf7c401e4257d5875ae6b"></a><!-- doxytag: member="yaml_parser_s::context" ref="6779b67a23bbf7c401e4257d5875ae6b" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* <a class="el" href="structyaml__parser__s.html#6779b67a23bbf7c401e4257d5875ae6b">yaml_parser_s::context</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The error context. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="ce259eec6e570f94b98b252e1a632e88"></a><!-- doxytag: member="yaml_parser_s::context_mark" ref="ce259eec6e570f94b98b252e1a632e88" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a> <a class="el" href="structyaml__parser__s.html#ce259eec6e570f94b98b252e1a632e88">yaml_parser_s::context_mark</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The context position. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="8c3af47a7a0750d437cba34699fcad30"></a><!-- doxytag: member="yaml_parser_s::read_handler" ref="8c3af47a7a0750d437cba34699fcad30" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__parser.html#g4982f7e4e001ddb47d2819f38f0cd9d6">yaml_read_handler_t</a>* <a class="el" href="structyaml__parser__s.html#8c3af47a7a0750d437cba34699fcad30">yaml_parser_s::read_handler</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Read handler. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="11f265cd495e814c8ee7d3dd78ff2ca9"></a><!-- doxytag: member="yaml_parser_s::read_handler_data" ref="11f265cd495e814c8ee7d3dd78ff2ca9" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void* <a class="el" href="structyaml__parser__s.html#11f265cd495e814c8ee7d3dd78ff2ca9">yaml_parser_s::read_handler_data</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-A pointer for passing to the read handler. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="8cdb2fed4bb17b1d62d29fa06c53fef6"></a><!-- doxytag: member="yaml_parser_s::start" ref="8cdb2fed4bb17b1d62d29fa06c53fef6" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const unsigned char* <a class="el" href="structyaml__parser__s.html#8cdb2fed4bb17b1d62d29fa06c53fef6">yaml_parser_s::start</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The string start pointer. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="ad74ffeb7f2eef0a12e34b0aac263ff3"></a><!-- doxytag: member="yaml_parser_s::end" ref="ad74ffeb7f2eef0a12e34b0aac263ff3" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const unsigned char* <a class="el" href="structyaml__parser__s.html#ad74ffeb7f2eef0a12e34b0aac263ff3">yaml_parser_s::end</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The string end pointer. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="3406d2ba7e969c09344d4ced8c855007"></a><!-- doxytag: member="yaml_parser_s::current" ref="3406d2ba7e969c09344d4ced8c855007" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const unsigned char* <a class="el" href="structyaml__parser__s.html#3406d2ba7e969c09344d4ced8c855007">yaml_parser_s::current</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The string current position. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="44fa7ca68030680244f3743ce5e35702"></a><!-- doxytag: member="yaml_parser_s::string" ref="44fa7ca68030680244f3743ce5e35702" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__parser__s.html#44fa7ca68030680244f3743ce5e35702">yaml_parser_s::string</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-String input data. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="e69c2974e3c4c37e941a0e1971be15a9"></a><!-- doxytag: member="yaml_parser_s::file" ref="e69c2974e3c4c37e941a0e1971be15a9" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">FILE* <a class="el" href="structyaml__parser__s.html#e69c2974e3c4c37e941a0e1971be15a9">yaml_parser_s::file</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-File input data. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="e800ef7fd42ad8bcbb69b116da3a7f53"></a><!-- doxytag: member="yaml_parser_s::input" ref="e800ef7fd42ad8bcbb69b116da3a7f53" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">union { ... }   <a class="el" href="structyaml__parser__s.html#e800ef7fd42ad8bcbb69b116da3a7f53">yaml_parser_s::input</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Standard (string or file) input data. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="5cdddcbd18566acc760a660a88f93ffd"></a><!-- doxytag: member="yaml_parser_s::start" ref="5cdddcbd18566acc760a660a88f93ffd" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a>* <a class="el" href="structyaml__parser__s.html#8cdb2fed4bb17b1d62d29fa06c53fef6">yaml_parser_s::start</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The beginning of the buffer. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="6ff1f802eb95bc45f13e8e73ec009828"></a><!-- doxytag: member="yaml_parser_s::end" ref="6ff1f802eb95bc45f13e8e73ec009828" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a>* <a class="el" href="structyaml__parser__s.html#ad74ffeb7f2eef0a12e34b0aac263ff3">yaml_parser_s::end</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The end of the buffer. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="8199466e3578374b3f984b6c0c4e2ae4"></a><!-- doxytag: member="yaml_parser_s::pointer" ref="8199466e3578374b3f984b6c0c4e2ae4" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a>* <a class="el" href="structyaml__parser__s.html#8199466e3578374b3f984b6c0c4e2ae4">yaml_parser_s::pointer</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The current position of the buffer. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="ea4d8da24939825b2fadd368a71ec7de"></a><!-- doxytag: member="yaml_parser_s::last" ref="ea4d8da24939825b2fadd368a71ec7de" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a>* <a class="el" href="structyaml__parser__s.html#ea4d8da24939825b2fadd368a71ec7de">yaml_parser_s::last</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The last filled position of the buffer. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="fc56b6252bd75ec87edec5c80a5c733e"></a><!-- doxytag: member="yaml_parser_s::buffer" ref="fc56b6252bd75ec87edec5c80a5c733e" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__parser__s.html#fc56b6252bd75ec87edec5c80a5c733e">yaml_parser_s::buffer</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The working buffer. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="6c08a94c21dfe1611c0d89aef0d3c46d"></a><!-- doxytag: member="yaml_parser_s::start" ref="6c08a94c21dfe1611c0d89aef0d3c46d" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned char* <a class="el" href="structyaml__parser__s.html#8cdb2fed4bb17b1d62d29fa06c53fef6">yaml_parser_s::start</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The beginning of the buffer. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="a768a9c29ae2c3015fdb84ea313844e2"></a><!-- doxytag: member="yaml_parser_s::end" ref="a768a9c29ae2c3015fdb84ea313844e2" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned char* <a class="el" href="structyaml__parser__s.html#ad74ffeb7f2eef0a12e34b0aac263ff3">yaml_parser_s::end</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The end of the buffer. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="bea626790abfbcaeeb72a3772dc69e43"></a><!-- doxytag: member="yaml_parser_s::pointer" ref="bea626790abfbcaeeb72a3772dc69e43" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned char* <a class="el" href="structyaml__parser__s.html#8199466e3578374b3f984b6c0c4e2ae4">yaml_parser_s::pointer</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The current position of the buffer. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="3ad1ccaf979092ece82bc981c5a22fb0"></a><!-- doxytag: member="yaml_parser_s::last" ref="3ad1ccaf979092ece82bc981c5a22fb0" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">unsigned char* <a class="el" href="structyaml__parser__s.html#ea4d8da24939825b2fadd368a71ec7de">yaml_parser_s::last</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The last filled position of the buffer. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="e3e8481ceabdbf6796a7dc6265f740ac"></a><!-- doxytag: member="yaml_parser_s::raw_buffer" ref="e3e8481ceabdbf6796a7dc6265f740ac" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__parser__s.html#e3e8481ceabdbf6796a7dc6265f740ac">yaml_parser_s::raw_buffer</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The raw buffer. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="4f062e9d1fb1082bbf3996e46214905a"></a><!-- doxytag: member="yaml_parser_s::encoding" ref="4f062e9d1fb1082bbf3996e46214905a" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#g2170996d7e636397b5e6bc0c1b7df7c6">yaml_encoding_t</a> <a class="el" href="structyaml__parser__s.html#4f062e9d1fb1082bbf3996e46214905a">yaml_parser_s::encoding</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The input encoding. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="04a7ba684ce49b2300c236c561439b13"></a><!-- doxytag: member="yaml_parser_s::offset" ref="04a7ba684ce49b2300c236c561439b13" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_t <a class="el" href="structyaml__parser__s.html#04a7ba684ce49b2300c236c561439b13">yaml_parser_s::offset</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The offset of the current position (in bytes). 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="aeeb58dc348e6e6f89d6a7c8fea8f734"></a><!-- doxytag: member="yaml_parser_s::mark" ref="aeeb58dc348e6e6f89d6a7c8fea8f734" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a> <a class="el" href="structyaml__parser__s.html#aeeb58dc348e6e6f89d6a7c8fea8f734">yaml_parser_s::mark</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The mark of the current position. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="6a4bbbd3f58533e0969b7218c1e73fd4"></a><!-- doxytag: member="yaml_parser_s::flow_level" ref="6a4bbbd3f58533e0969b7218c1e73fd4" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int <a class="el" href="structyaml__parser__s.html#6a4bbbd3f58533e0969b7218c1e73fd4">yaml_parser_s::flow_level</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The number of unclosed '[' and '{' indicators. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="5f33f5c8f19c1c124cba4857ab2a05c7"></a><!-- doxytag: member="yaml_parser_s::start" ref="5f33f5c8f19c1c124cba4857ab2a05c7" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__token__s.html">yaml_token_t</a>* <a class="el" href="structyaml__parser__s.html#8cdb2fed4bb17b1d62d29fa06c53fef6">yaml_parser_s::start</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The beginning of the tokens queue. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="41594b6495f4d31edb977cafb8cbaf78"></a><!-- doxytag: member="yaml_parser_s::end" ref="41594b6495f4d31edb977cafb8cbaf78" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__token__s.html">yaml_token_t</a>* <a class="el" href="structyaml__parser__s.html#ad74ffeb7f2eef0a12e34b0aac263ff3">yaml_parser_s::end</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The end of the tokens queue. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="a1c7a1248ca22159a3e60ba45b386507"></a><!-- doxytag: member="yaml_parser_s::head" ref="a1c7a1248ca22159a3e60ba45b386507" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__token__s.html">yaml_token_t</a>* <a class="el" href="structyaml__parser__s.html#a1c7a1248ca22159a3e60ba45b386507">yaml_parser_s::head</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The head of the tokens queue. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="22ad26583d8d1264e982188358aa79b6"></a><!-- doxytag: member="yaml_parser_s::tail" ref="22ad26583d8d1264e982188358aa79b6" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__token__s.html">yaml_token_t</a>* <a class="el" href="structyaml__parser__s.html#22ad26583d8d1264e982188358aa79b6">yaml_parser_s::tail</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The tail of the tokens queue. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="96d39b8333411d741ee1c13aa4141682"></a><!-- doxytag: member="yaml_parser_s::tokens" ref="96d39b8333411d741ee1c13aa4141682" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__parser__s.html#96d39b8333411d741ee1c13aa4141682">yaml_parser_s::tokens</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The tokens queue. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="7358e72ad071fec3185a833a3a245690"></a><!-- doxytag: member="yaml_parser_s::tokens_parsed" ref="7358e72ad071fec3185a833a3a245690" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_t <a class="el" href="structyaml__parser__s.html#7358e72ad071fec3185a833a3a245690">yaml_parser_s::tokens_parsed</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The number of tokens fetched from the queue. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="b7208590a6852001ff8e4343a97b0c24"></a><!-- doxytag: member="yaml_parser_s::start" ref="b7208590a6852001ff8e4343a97b0c24" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int* <a class="el" href="structyaml__parser__s.html#8cdb2fed4bb17b1d62d29fa06c53fef6">yaml_parser_s::start</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The beginning of the stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="6d8295bd62c7bb7be9486a1b4d71e736"></a><!-- doxytag: member="yaml_parser_s::end" ref="6d8295bd62c7bb7be9486a1b4d71e736" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int* <a class="el" href="structyaml__parser__s.html#ad74ffeb7f2eef0a12e34b0aac263ff3">yaml_parser_s::end</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The end of the stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="9f1f879ba84bc51fa8feb1f47190aa23"></a><!-- doxytag: member="yaml_parser_s::top" ref="9f1f879ba84bc51fa8feb1f47190aa23" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int* <a class="el" href="structyaml__parser__s.html#9f1f879ba84bc51fa8feb1f47190aa23">yaml_parser_s::top</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The top of the stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="2e29feac36a89f644d9640d44df62b74"></a><!-- doxytag: member="yaml_parser_s::indents" ref="2e29feac36a89f644d9640d44df62b74" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__parser__s.html#2e29feac36a89f644d9640d44df62b74">yaml_parser_s::indents</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The indentation levels stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="bad00703b649df32ee0d7b00b2f10403"></a><!-- doxytag: member="yaml_parser_s::indent" ref="bad00703b649df32ee0d7b00b2f10403" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int <a class="el" href="structyaml__parser__s.html#bad00703b649df32ee0d7b00b2f10403">yaml_parser_s::indent</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The current indentation level. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="c311a6d962e0f67dd11759b8999630c6"></a><!-- doxytag: member="yaml_parser_s::start" ref="c311a6d962e0f67dd11759b8999630c6" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__simple__key__s.html">yaml_simple_key_t</a>* <a class="el" href="structyaml__parser__s.html#8cdb2fed4bb17b1d62d29fa06c53fef6">yaml_parser_s::start</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The beginning of the stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="e8416ffcb48c78a575ee21872d5aa698"></a><!-- doxytag: member="yaml_parser_s::end" ref="e8416ffcb48c78a575ee21872d5aa698" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__simple__key__s.html">yaml_simple_key_t</a>* <a class="el" href="structyaml__parser__s.html#ad74ffeb7f2eef0a12e34b0aac263ff3">yaml_parser_s::end</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The end of the stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="e610673669f06d46146198a346796276"></a><!-- doxytag: member="yaml_parser_s::top" ref="e610673669f06d46146198a346796276" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__simple__key__s.html">yaml_simple_key_t</a>* <a class="el" href="structyaml__parser__s.html#9f1f879ba84bc51fa8feb1f47190aa23">yaml_parser_s::top</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The top of the stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="d5ce7de476c58fb6e1fdabbcc1c51659"></a><!-- doxytag: member="yaml_parser_s::simple_keys" ref="d5ce7de476c58fb6e1fdabbcc1c51659" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__parser__s.html#d5ce7de476c58fb6e1fdabbcc1c51659">yaml_parser_s::simple_keys</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The stack of simple keys. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="dfdc33f6f53dce4bee87f11821d879b7"></a><!-- doxytag: member="yaml_parser_s::start" ref="dfdc33f6f53dce4bee87f11821d879b7" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__parser.html#g52b56d3e3cee0f9ba460978802a8c83b">yaml_parser_state_t</a>* <a class="el" href="structyaml__parser__s.html#8cdb2fed4bb17b1d62d29fa06c53fef6">yaml_parser_s::start</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The beginning of the stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="211a0aedc964ba8cd07cb7875faa464b"></a><!-- doxytag: member="yaml_parser_s::end" ref="211a0aedc964ba8cd07cb7875faa464b" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__parser.html#g52b56d3e3cee0f9ba460978802a8c83b">yaml_parser_state_t</a>* <a class="el" href="structyaml__parser__s.html#ad74ffeb7f2eef0a12e34b0aac263ff3">yaml_parser_s::end</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The end of the stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="f3eecdcdeeb183d16e4219749620df0c"></a><!-- doxytag: member="yaml_parser_s::top" ref="f3eecdcdeeb183d16e4219749620df0c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__parser.html#g52b56d3e3cee0f9ba460978802a8c83b">yaml_parser_state_t</a>* <a class="el" href="structyaml__parser__s.html#9f1f879ba84bc51fa8feb1f47190aa23">yaml_parser_s::top</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The top of the stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="57aa3c5fbfcaed8c17e046f0778c92bf"></a><!-- doxytag: member="yaml_parser_s::states" ref="57aa3c5fbfcaed8c17e046f0778c92bf" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__parser__s.html#57aa3c5fbfcaed8c17e046f0778c92bf">yaml_parser_s::states</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The parser states stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="069d39cdf587ac2188e69d8fb018be64"></a><!-- doxytag: member="yaml_parser_s::state" ref="069d39cdf587ac2188e69d8fb018be64" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__parser.html#g52b56d3e3cee0f9ba460978802a8c83b">yaml_parser_state_t</a> <a class="el" href="structyaml__parser__s.html#069d39cdf587ac2188e69d8fb018be64">yaml_parser_s::state</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The current parser state. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="b5a3789882819f2fd69f2cd9deaac8f6"></a><!-- doxytag: member="yaml_parser_s::start" ref="b5a3789882819f2fd69f2cd9deaac8f6" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a>* <a class="el" href="structyaml__parser__s.html#8cdb2fed4bb17b1d62d29fa06c53fef6">yaml_parser_s::start</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The beginning of the stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="ad019da255ea73adf31d4b1aeac86bb2"></a><!-- doxytag: member="yaml_parser_s::end" ref="ad019da255ea73adf31d4b1aeac86bb2" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a>* <a class="el" href="structyaml__parser__s.html#ad74ffeb7f2eef0a12e34b0aac263ff3">yaml_parser_s::end</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The end of the stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="b2678112fd2eaa8f588f2d6217aabc9d"></a><!-- doxytag: member="yaml_parser_s::top" ref="b2678112fd2eaa8f588f2d6217aabc9d" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a>* <a class="el" href="structyaml__parser__s.html#9f1f879ba84bc51fa8feb1f47190aa23">yaml_parser_s::top</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The top of the stack. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="d78837ae36e35d523e02c43d1ae3f30e"></a><!-- doxytag: member="yaml_parser_s::marks" ref="d78837ae36e35d523e02c43d1ae3f30e" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__parser__s.html#d78837ae36e35d523e02c43d1ae3f30e">yaml_parser_s::marks</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The stack of marks. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="3614f6d6e673e8177e4555c9ecf830fb"></a><!-- doxytag: member="yaml_parser_s::start" ref="3614f6d6e673e8177e4555c9ecf830fb" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a>* <a class="el" href="structyaml__parser__s.html#8cdb2fed4bb17b1d62d29fa06c53fef6">yaml_parser_s::start</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The beginning of the list. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="a7fdc1ff8342636119934ac824a2ecc8"></a><!-- doxytag: member="yaml_parser_s::end" ref="a7fdc1ff8342636119934ac824a2ecc8" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a>* <a class="el" href="structyaml__parser__s.html#ad74ffeb7f2eef0a12e34b0aac263ff3">yaml_parser_s::end</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The end of the list. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="490eddbfcc27787e47de631a3d2e09a8"></a><!-- doxytag: member="yaml_parser_s::top" ref="490eddbfcc27787e47de631a3d2e09a8" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a>* <a class="el" href="structyaml__parser__s.html#9f1f879ba84bc51fa8feb1f47190aa23">yaml_parser_s::top</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The top of the list. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="9bdfc1888d4e30ffb43146377d44fba0"></a><!-- doxytag: member="yaml_parser_s::tag_directives" ref="9bdfc1888d4e30ffb43146377d44fba0" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__parser__s.html#9bdfc1888d4e30ffb43146377d44fba0">yaml_parser_s::tag_directives</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The list of TAG directives. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="b9eddd3a112c3a4547bf87f6936aba94"></a><!-- doxytag: member="yaml_parser_s::start" ref="b9eddd3a112c3a4547bf87f6936aba94" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__alias__data__s.html">yaml_alias_data_t</a>* <a class="el" href="structyaml__parser__s.html#8cdb2fed4bb17b1d62d29fa06c53fef6">yaml_parser_s::start</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The beginning of the list. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="4011d41483171958bbf0b5124bde97c8"></a><!-- doxytag: member="yaml_parser_s::end" ref="4011d41483171958bbf0b5124bde97c8" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__alias__data__s.html">yaml_alias_data_t</a>* <a class="el" href="structyaml__parser__s.html#ad74ffeb7f2eef0a12e34b0aac263ff3">yaml_parser_s::end</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The end of the list. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="24a3f3138b44de1914a3e54dbe0aeff7"></a><!-- doxytag: member="yaml_parser_s::top" ref="24a3f3138b44de1914a3e54dbe0aeff7" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__alias__data__s.html">yaml_alias_data_t</a>* <a class="el" href="structyaml__parser__s.html#9f1f879ba84bc51fa8feb1f47190aa23">yaml_parser_s::top</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The top of the list. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="0c10698207d727f9e5d9ced627d130ef"></a><!-- doxytag: member="yaml_parser_s::aliases" ref="0c10698207d727f9e5d9ced627d130ef" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__parser__s.html#0c10698207d727f9e5d9ced627d130ef">yaml_parser_s::aliases</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The alias data. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="c3dad5822f49d86cfddc2e5e415a158c"></a><!-- doxytag: member="yaml_parser_s::document" ref="c3dad5822f49d86cfddc2e5e415a158c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__document__s.html">yaml_document_t</a>* <a class="el" href="structyaml__parser__s.html#c3dad5822f49d86cfddc2e5e415a158c">yaml_parser_s::document</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The currently parsed document. 
-<p>
-
-</div>
-</div><p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="yaml_8h.html">yaml.h</a></ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/structyaml__simple__key__s.html b/yaml-0.1.3/doc/html/structyaml__simple__key__s.html
deleted file mode 100644
index 8f0b355..0000000
--- a/yaml-0.1.3/doc/html/structyaml__simple__key__s.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: yaml_simple_key_s Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>yaml_simple_key_s Struct Reference<br>
-<small>
-[<a class="el" href="group__parser.html">Parser Definitions</a>]</small>
-</h1><!-- doxytag: class="yaml_simple_key_s" -->This structure holds information about a potential simple key.  
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;yaml.h&gt;</code>
-<p>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ad311b0fa599db04657a5177ec331f07"></a><!-- doxytag: member="yaml_simple_key_s::possible" ref="ad311b0fa599db04657a5177ec331f07" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__simple__key__s.html#ad311b0fa599db04657a5177ec331f07">possible</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Is a simple key possible? <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cacccea26520e74c4c61f170fdcbb4c3"></a><!-- doxytag: member="yaml_simple_key_s::required" ref="cacccea26520e74c4c61f170fdcbb4c3" args="" -->
-int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__simple__key__s.html#cacccea26520e74c4c61f170fdcbb4c3">required</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Is a simple key required? <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__simple__key__s.html#e098916893ad7415c5c041dd45d24a86">token_number</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The number of the token.  <a href="#e098916893ad7415c5c041dd45d24a86"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__simple__key__s.html#d0f5dd11cbf2e4d6d81376511e2b6dfb">mark</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The position mark.  <a href="#d0f5dd11cbf2e4d6d81376511e2b6dfb"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This structure holds information about a potential simple key. <hr><h2>Field Documentation</h2>
-<a class="anchor" name="e098916893ad7415c5c041dd45d24a86"></a><!-- doxytag: member="yaml_simple_key_s::token_number" ref="e098916893ad7415c5c041dd45d24a86" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_t <a class="el" href="structyaml__simple__key__s.html#e098916893ad7415c5c041dd45d24a86">yaml_simple_key_s::token_number</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The number of the token. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="d0f5dd11cbf2e4d6d81376511e2b6dfb"></a><!-- doxytag: member="yaml_simple_key_s::mark" ref="d0f5dd11cbf2e4d6d81376511e2b6dfb" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a> <a class="el" href="structyaml__simple__key__s.html#d0f5dd11cbf2e4d6d81376511e2b6dfb">yaml_simple_key_s::mark</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The position mark. 
-<p>
-
-</div>
-</div><p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="yaml_8h.html">yaml.h</a></ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/structyaml__tag__directive__s.html b/yaml-0.1.3/doc/html/structyaml__tag__directive__s.html
deleted file mode 100644
index 7937a7e..0000000
--- a/yaml-0.1.3/doc/html/structyaml__tag__directive__s.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: yaml_tag_directive_s Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>yaml_tag_directive_s Struct Reference<br>
-<small>
-[<a class="el" href="group__basic.html">Basic Types</a>]</small>
-</h1><!-- doxytag: class="yaml_tag_directive_s" -->The tag directive data.  
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;yaml.h&gt;</code>
-<p>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__tag__directive__s.html#9934c62f2b18fd087a95af25c7739490">handle</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag handle.  <a href="#9934c62f2b18fd087a95af25c7739490"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__tag__directive__s.html#514850fefaafbe65b2322da8c193a896">prefix</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag prefix.  <a href="#514850fefaafbe65b2322da8c193a896"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-The tag directive data. 
-<p>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="9934c62f2b18fd087a95af25c7739490"></a><!-- doxytag: member="yaml_tag_directive_s::handle" ref="9934c62f2b18fd087a95af25c7739490" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a>* <a class="el" href="structyaml__tag__directive__s.html#9934c62f2b18fd087a95af25c7739490">yaml_tag_directive_s::handle</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The tag handle. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="514850fefaafbe65b2322da8c193a896"></a><!-- doxytag: member="yaml_tag_directive_s::prefix" ref="514850fefaafbe65b2322da8c193a896" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a>* <a class="el" href="structyaml__tag__directive__s.html#514850fefaafbe65b2322da8c193a896">yaml_tag_directive_s::prefix</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The tag prefix. 
-<p>
-
-</div>
-</div><p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="yaml_8h.html">yaml.h</a></ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/structyaml__token__s.html b/yaml-0.1.3/doc/html/structyaml__token__s.html
deleted file mode 100644
index bfd2e95..0000000
--- a/yaml-0.1.3/doc/html/structyaml__token__s.html
+++ /dev/null
@@ -1,474 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: yaml_token_s Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>yaml_token_s Struct Reference<br>
-<small>
-[<a class="el" href="group__tokens.html">Tokens</a>]</small>
-</h1><!-- doxytag: class="yaml_token_s" -->The token structure.  
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;yaml.h&gt;</code>
-<p>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__tokens.html#gba51dda022dced02f8df2224ab7993f7">yaml_token_type_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__token__s.html#a8aeb89e2e74f5e2f199484177d0ea14">type</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The token type.  <a href="#a8aeb89e2e74f5e2f199484177d0ea14"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>union {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#g2170996d7e636397b5e6bc0c1b7df7c6">yaml_encoding_t</a>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__token__s.html#ab75b9cb91438e0e1efe2522652cf478">encoding</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The stream encoding.  <a href="#a9385ed45a5e68d52e21eb29f9db2f65"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__token__s.html#ab66b62f4507f4fd0e9d2b7548f588e6">stream_start</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The stream start (for <code>YAML_STREAM_START_TOKEN</code>).  <a href="#681cc43966a93264a05e4235c0055dcd"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__token__s.html#97ce52329d6093b63fba36817f8bd549">value</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The alias value.  <a href="#2db9e6f31efd122c52e2811c3c28371d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__token__s.html#1f942353efa1972a38a0763afefabe0c">alias</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The alias (for <code>YAML_ALIAS_TOKEN</code>).  <a href="#5ddf9525e40cd6144fb0a21a5179e5fb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__token__s.html#97ce52329d6093b63fba36817f8bd549">value</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The anchor value.  <a href="#140e62cd0f324d32799c5729cf4cb03a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__token__s.html#cc0f6636995f5fe332604b74571e6cfa">anchor</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The anchor (for <code>YAML_ANCHOR_TOKEN</code>).  <a href="#055431f22074366e837f42c6d67fb4ae"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__token__s.html#01665687653c945a6666dd9debaecd65">handle</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag handle.  <a href="#0b603e9eae1202efcd2b5ae745a69a49"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__token__s.html#61344c49b73da5821cb06cab4cbab505">suffix</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag suffix.  <a href="#09a1c779ccafc92c5a3b94eb5efd7e8a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__token__s.html#b281db5b7563c5489726768fe0fbaac7">tag</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag (for <code>YAML_TAG_TOKEN</code>).  <a href="#afaddc0e76641e61d774ca90a3f8b360"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__token__s.html#97ce52329d6093b63fba36817f8bd549">value</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The scalar value.  <a href="#87a062430316d0ef8f0f3fdd62ef93d7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size_t&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__token__s.html#06e51daf74cf78103e00608c3c9132e2">length</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The length of the scalar value.  <a href="#0f661c093c5611b30829a3d7c5777a24"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__styles.html#g3fa6405631e1afe5bd5c488a6c5e8065">yaml_scalar_style_t</a>&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__token__s.html#530a8c4d78feaf5496fb9f461674382b">style</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The scalar style.  <a href="#adee361d95e0eb76f7bb659dd410dcdf"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__token__s.html#35e3629351176dd91b38cbfc827a8b00">scalar</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The scalar value (for <code>YAML_SCALAR_TOKEN</code>).  <a href="#7e26b9d9d2e6790ba95906e963e519a7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__token__s.html#ac2ed466afd0390872774238dfcd152c">major</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The major version number.  <a href="#8aeeffcfdf5a843b8cc5e7a4b16f73c2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__token__s.html#97b9f537b24e8413e9fddc6a4b183d30">minor</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The minor version number.  <a href="#334df6d76d660bbe6153bb1310c99133"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__token__s.html#41b30a59ca22d1020d6af4cc7cc0da47">version_directive</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The version directive (for <code>YAML_VERSION_DIRECTIVE_TOKEN</code>).  <a href="#be60244f5fff9199c6dbd5bbc72fd4d2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;struct {</td></tr>
-
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__token__s.html#01665687653c945a6666dd9debaecd65">handle</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag handle.  <a href="#ab6891dd7d8e810bdf5c8fc5c162f0d0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__token__s.html#561b3730b9999cfe1010e77aca49c5b8">prefix</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag prefix.  <a href="#c49f690e6e67ac5bbdeb028139e16fed"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<a class="el" href="structyaml__token__s.html#a8a1b9eeee539233e8461773894f4ea0">tag_directive</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag directive (for <code>YAML_TAG_DIRECTIVE_TOKEN</code>).  <a href="#90ae6dd0a77665ca6f07f02f65cfce60"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__token__s.html#edb5be9b6b8f5ef6c129575e84f63605">data</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The token data.  <a href="#edb5be9b6b8f5ef6c129575e84f63605"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__token__s.html#bdc5f4f2059c5a7bfe8e810b49a53980">start_mark</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The beginning of the token.  <a href="#bdc5f4f2059c5a7bfe8e810b49a53980"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__token__s.html#97f08b38dfb0a5be26ef8831864a5311">end_mark</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The end of the token.  <a href="#97f08b38dfb0a5be26ef8831864a5311"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-The token structure. 
-<p>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="a8aeb89e2e74f5e2f199484177d0ea14"></a><!-- doxytag: member="yaml_token_s::type" ref="a8aeb89e2e74f5e2f199484177d0ea14" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__tokens.html#gba51dda022dced02f8df2224ab7993f7">yaml_token_type_t</a> <a class="el" href="structyaml__token__s.html#a8aeb89e2e74f5e2f199484177d0ea14">yaml_token_s::type</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The token type. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="ab75b9cb91438e0e1efe2522652cf478"></a><!-- doxytag: member="yaml_token_s::encoding" ref="ab75b9cb91438e0e1efe2522652cf478" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#g2170996d7e636397b5e6bc0c1b7df7c6">yaml_encoding_t</a> <a class="el" href="structyaml__token__s.html#ab75b9cb91438e0e1efe2522652cf478">yaml_token_s::encoding</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The stream encoding. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="ab66b62f4507f4fd0e9d2b7548f588e6"></a><!-- doxytag: member="yaml_token_s::stream_start" ref="ab66b62f4507f4fd0e9d2b7548f588e6" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__token__s.html#ab66b62f4507f4fd0e9d2b7548f588e6">yaml_token_s::stream_start</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The stream start (for <code>YAML_STREAM_START_TOKEN</code>). 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="97ce52329d6093b63fba36817f8bd549"></a><!-- doxytag: member="yaml_token_s::value" ref="97ce52329d6093b63fba36817f8bd549" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a>* <a class="el" href="structyaml__token__s.html#97ce52329d6093b63fba36817f8bd549">yaml_token_s::value</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The alias value. 
-<p>
-The scalar value.<p>
-The anchor value.
-</div>
-</div><p>
-<a class="anchor" name="1f942353efa1972a38a0763afefabe0c"></a><!-- doxytag: member="yaml_token_s::alias" ref="1f942353efa1972a38a0763afefabe0c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__token__s.html#1f942353efa1972a38a0763afefabe0c">yaml_token_s::alias</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The alias (for <code>YAML_ALIAS_TOKEN</code>). 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="cc0f6636995f5fe332604b74571e6cfa"></a><!-- doxytag: member="yaml_token_s::anchor" ref="cc0f6636995f5fe332604b74571e6cfa" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__token__s.html#cc0f6636995f5fe332604b74571e6cfa">yaml_token_s::anchor</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The anchor (for <code>YAML_ANCHOR_TOKEN</code>). 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="01665687653c945a6666dd9debaecd65"></a><!-- doxytag: member="yaml_token_s::handle" ref="01665687653c945a6666dd9debaecd65" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a>* <a class="el" href="structyaml__token__s.html#01665687653c945a6666dd9debaecd65">yaml_token_s::handle</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The tag handle. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="61344c49b73da5821cb06cab4cbab505"></a><!-- doxytag: member="yaml_token_s::suffix" ref="61344c49b73da5821cb06cab4cbab505" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a>* <a class="el" href="structyaml__token__s.html#61344c49b73da5821cb06cab4cbab505">yaml_token_s::suffix</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The tag suffix. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="b281db5b7563c5489726768fe0fbaac7"></a><!-- doxytag: member="yaml_token_s::tag" ref="b281db5b7563c5489726768fe0fbaac7" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__token__s.html#b281db5b7563c5489726768fe0fbaac7">yaml_token_s::tag</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The tag (for <code>YAML_TAG_TOKEN</code>). 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="06e51daf74cf78103e00608c3c9132e2"></a><!-- doxytag: member="yaml_token_s::length" ref="06e51daf74cf78103e00608c3c9132e2" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_t <a class="el" href="structyaml__token__s.html#06e51daf74cf78103e00608c3c9132e2">yaml_token_s::length</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The length of the scalar value. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="530a8c4d78feaf5496fb9f461674382b"></a><!-- doxytag: member="yaml_token_s::style" ref="530a8c4d78feaf5496fb9f461674382b" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__styles.html#g3fa6405631e1afe5bd5c488a6c5e8065">yaml_scalar_style_t</a> <a class="el" href="structyaml__token__s.html#530a8c4d78feaf5496fb9f461674382b">yaml_token_s::style</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The scalar style. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="35e3629351176dd91b38cbfc827a8b00"></a><!-- doxytag: member="yaml_token_s::scalar" ref="35e3629351176dd91b38cbfc827a8b00" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__token__s.html#35e3629351176dd91b38cbfc827a8b00">yaml_token_s::scalar</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The scalar value (for <code>YAML_SCALAR_TOKEN</code>). 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="ac2ed466afd0390872774238dfcd152c"></a><!-- doxytag: member="yaml_token_s::major" ref="ac2ed466afd0390872774238dfcd152c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int <a class="el" href="structyaml__token__s.html#ac2ed466afd0390872774238dfcd152c">yaml_token_s::major</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The major version number. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="97b9f537b24e8413e9fddc6a4b183d30"></a><!-- doxytag: member="yaml_token_s::minor" ref="97b9f537b24e8413e9fddc6a4b183d30" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int <a class="el" href="structyaml__token__s.html#97b9f537b24e8413e9fddc6a4b183d30">yaml_token_s::minor</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The minor version number. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="41b30a59ca22d1020d6af4cc7cc0da47"></a><!-- doxytag: member="yaml_token_s::version_directive" ref="41b30a59ca22d1020d6af4cc7cc0da47" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__token__s.html#41b30a59ca22d1020d6af4cc7cc0da47">yaml_token_s::version_directive</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The version directive (for <code>YAML_VERSION_DIRECTIVE_TOKEN</code>). 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="561b3730b9999cfe1010e77aca49c5b8"></a><!-- doxytag: member="yaml_token_s::prefix" ref="561b3730b9999cfe1010e77aca49c5b8" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a>* <a class="el" href="structyaml__token__s.html#561b3730b9999cfe1010e77aca49c5b8">yaml_token_s::prefix</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The tag prefix. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="a8a1b9eeee539233e8461773894f4ea0"></a><!-- doxytag: member="yaml_token_s::tag_directive" ref="a8a1b9eeee539233e8461773894f4ea0" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">struct { ... }   <a class="el" href="structyaml__token__s.html#a8a1b9eeee539233e8461773894f4ea0">yaml_token_s::tag_directive</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The tag directive (for <code>YAML_TAG_DIRECTIVE_TOKEN</code>). 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="edb5be9b6b8f5ef6c129575e84f63605"></a><!-- doxytag: member="yaml_token_s::data" ref="edb5be9b6b8f5ef6c129575e84f63605" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">union { ... }   <a class="el" href="structyaml__token__s.html#edb5be9b6b8f5ef6c129575e84f63605">yaml_token_s::data</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The token data. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="bdc5f4f2059c5a7bfe8e810b49a53980"></a><!-- doxytag: member="yaml_token_s::start_mark" ref="bdc5f4f2059c5a7bfe8e810b49a53980" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a> <a class="el" href="structyaml__token__s.html#bdc5f4f2059c5a7bfe8e810b49a53980">yaml_token_s::start_mark</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The beginning of the token. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="97f08b38dfb0a5be26ef8831864a5311"></a><!-- doxytag: member="yaml_token_s::end_mark" ref="97f08b38dfb0a5be26ef8831864a5311" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structyaml__mark__s.html">yaml_mark_t</a> <a class="el" href="structyaml__token__s.html#97f08b38dfb0a5be26ef8831864a5311">yaml_token_s::end_mark</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The end of the token. 
-<p>
-
-</div>
-</div><p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="yaml_8h.html">yaml.h</a></ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/structyaml__version__directive__s.html b/yaml-0.1.3/doc/html/structyaml__version__directive__s.html
deleted file mode 100644
index 344c519..0000000
--- a/yaml-0.1.3/doc/html/structyaml__version__directive__s.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: yaml_version_directive_s Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>yaml_version_directive_s Struct Reference<br>
-<small>
-[<a class="el" href="group__basic.html">Basic Types</a>]</small>
-</h1><!-- doxytag: class="yaml_version_directive_s" -->The version directive data.  
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;yaml.h&gt;</code>
-<p>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__version__directive__s.html#d27326ff94b7772027c3009d1dd5e52b">major</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The major version number.  <a href="#d27326ff94b7772027c3009d1dd5e52b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__version__directive__s.html#89f074113501e6e150503f34b046dbd1">minor</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The minor version number.  <a href="#89f074113501e6e150503f34b046dbd1"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-The version directive data. 
-<p>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="d27326ff94b7772027c3009d1dd5e52b"></a><!-- doxytag: member="yaml_version_directive_s::major" ref="d27326ff94b7772027c3009d1dd5e52b" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int <a class="el" href="structyaml__version__directive__s.html#d27326ff94b7772027c3009d1dd5e52b">yaml_version_directive_s::major</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The major version number. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="89f074113501e6e150503f34b046dbd1"></a><!-- doxytag: member="yaml_version_directive_s::minor" ref="89f074113501e6e150503f34b046dbd1" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int <a class="el" href="structyaml__version__directive__s.html#89f074113501e6e150503f34b046dbd1">yaml_version_directive_s::minor</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The minor version number. 
-<p>
-
-</div>
-</div><p>
-<hr>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="yaml_8h.html">yaml.h</a></ul>
-</div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/doc/html/tab_b.gif b/yaml-0.1.3/doc/html/tab_b.gif
deleted file mode 100644
index 0d62348..0000000
--- a/yaml-0.1.3/doc/html/tab_b.gif
+++ /dev/null
Binary files differ
diff --git a/yaml-0.1.3/doc/html/tab_l.gif b/yaml-0.1.3/doc/html/tab_l.gif
deleted file mode 100644
index 9b1e633..0000000
--- a/yaml-0.1.3/doc/html/tab_l.gif
+++ /dev/null
Binary files differ
diff --git a/yaml-0.1.3/doc/html/tab_r.gif b/yaml-0.1.3/doc/html/tab_r.gif
deleted file mode 100644
index ce9dd9f..0000000
--- a/yaml-0.1.3/doc/html/tab_r.gif
+++ /dev/null
Binary files differ
diff --git a/yaml-0.1.3/doc/html/tabs.css b/yaml-0.1.3/doc/html/tabs.css
deleted file mode 100644
index ab02c62..0000000
--- a/yaml-0.1.3/doc/html/tabs.css
+++ /dev/null
@@ -1,105 +0,0 @@
-/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
-
-DIV.tabs
-{
-   float            : left;
-   width            : 100%;
-   background       : url("tab_b.gif") repeat-x bottom;
-   margin-bottom    : 4px;
-}
-
-DIV.tabs UL
-{
-   margin           : 0px;
-   padding-left     : 10px;
-   list-style       : none;
-}
-
-DIV.tabs LI, DIV.tabs FORM
-{
-   display          : inline;
-   margin           : 0px;
-   padding          : 0px;
-}
-
-DIV.tabs FORM
-{
-   float            : right;
-}
-
-DIV.tabs A
-{
-   float            : left;
-   background       : url("tab_r.gif") no-repeat right top;
-   border-bottom    : 1px solid #84B0C7;
-   font-size        : 80%;
-   font-weight      : bold;
-   text-decoration  : none;
-}
-
-DIV.tabs A:hover
-{
-   background-position: 100% -150px;
-}
-
-DIV.tabs A:link, DIV.tabs A:visited,
-DIV.tabs A:active, DIV.tabs A:hover
-{
-       color: #1A419D;
-}
-
-DIV.tabs SPAN
-{
-   float            : left;
-   display          : block;
-   background       : url("tab_l.gif") no-repeat left top;
-   padding          : 5px 9px;
-   white-space      : nowrap;
-}
-
-DIV.tabs INPUT
-{
-   float            : right;
-   display          : inline;
-   font-size        : 1em;
-}
-
-DIV.tabs TD
-{
-   font-size        : 80%;
-   font-weight      : bold;
-   text-decoration  : none;
-}
-
-
-
-/* Commented Backslash Hack hides rule from IE5-Mac \*/
-DIV.tabs SPAN {float : none;}
-/* End IE5-Mac hack */
-
-DIV.tabs A:hover SPAN
-{
-   background-position: 0% -150px;
-}
-
-DIV.tabs LI.current A
-{
-   background-position: 100% -150px;
-   border-width     : 0px;
-}
-
-DIV.tabs LI.current SPAN
-{
-   background-position: 0% -150px;
-   padding-bottom   : 6px;
-}
-
-DIV.navpath
-{
-   background       : none;
-   border           : none;
-   border-bottom    : 1px solid #84B0C7;
-   text-align       : center;
-   margin           : 2px;
-   padding          : 2px;
-}
diff --git a/yaml-0.1.3/doc/html/yaml_8h.html b/yaml-0.1.3/doc/html/yaml_8h.html
deleted file mode 100644
index f554f11..0000000
--- a/yaml-0.1.3/doc/html/yaml_8h.html
+++ /dev/null
@@ -1,607 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>yaml: yaml.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div class="tabs">
-    <ul>
-      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>yaml.h File Reference</h1>Public interface for libyaml.  
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;stdlib.h&gt;</code><br>
-<code>#include &lt;stdio.h&gt;</code><br>
-<code>#include &lt;string.h&gt;</code><br>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__version__directive__s.html">yaml_version_directive_s</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The version directive data.  <a href="structyaml__version__directive__s.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_s</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag directive data.  <a href="structyaml__tag__directive__s.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__mark__s.html">yaml_mark_s</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The pointer position.  <a href="structyaml__mark__s.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__token__s.html">yaml_token_s</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The token structure.  <a href="structyaml__token__s.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__event__s.html">yaml_event_s</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The event structure.  <a href="structyaml__event__s.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__node__pair__s.html">yaml_node_pair_s</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An element of a mapping node.  <a href="structyaml__node__pair__s.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__node__s.html">yaml_node_s</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The node structure.  <a href="structyaml__node__s.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__document__s.html">yaml_document_s</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The document structure.  <a href="structyaml__document__s.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__simple__key__s.html">yaml_simple_key_s</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This structure holds information about a potential simple key.  <a href="structyaml__simple__key__s.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__alias__data__s.html">yaml_alias_data_s</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This structure holds aliases data.  <a href="structyaml__alias__data__s.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__parser__s.html">yaml_parser_s</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The parser structure.  <a href="structyaml__parser__s.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyaml__emitter__s.html">yaml_emitter_s</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The emitter structure.  <a href="structyaml__emitter__s.html#_details">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__export.html#g0791fd3e1d85ed53711b1feaae131f93">YAML_DECLARE</a>(type)&nbsp;&nbsp;&nbsp;type</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The public API declaration.  <a href="group__export.html#g0791fd3e1d85ed53711b1feaae131f93"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#gdfa882b6e42a3a993d12392d55260b00">YAML_NULL_TAG</a>&nbsp;&nbsp;&nbsp;&quot;tag:yaml.org,2002:null&quot;</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag <code>!!null</code> with the only possible value: <code>null</code>.  <a href="group__nodes.html#gdfa882b6e42a3a993d12392d55260b00"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g312629a1f51e91b136352db988d4d771">YAML_BOOL_TAG</a>&nbsp;&nbsp;&nbsp;&quot;tag:yaml.org,2002:bool&quot;</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag <code>!!bool</code> with the values: <code>true</code> and <code>falce</code>.  <a href="group__nodes.html#g312629a1f51e91b136352db988d4d771"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#gc5dbc6d1f556663edf8db88d6113e931">YAML_STR_TAG</a>&nbsp;&nbsp;&nbsp;&quot;tag:yaml.org,2002:str&quot;</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag <code>!!str</code> for string values.  <a href="group__nodes.html#gc5dbc6d1f556663edf8db88d6113e931"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g83263cdb4ffa6ad2f7d9a87281979ff5">YAML_INT_TAG</a>&nbsp;&nbsp;&nbsp;&quot;tag:yaml.org,2002:int&quot;</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag <code>!!int</code> for integer values.  <a href="group__nodes.html#g83263cdb4ffa6ad2f7d9a87281979ff5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g6ab2ec71fc47cb24f1003b9acdb92843">YAML_FLOAT_TAG</a>&nbsp;&nbsp;&nbsp;&quot;tag:yaml.org,2002:float&quot;</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag <code>!!float</code> for float values.  <a href="group__nodes.html#g6ab2ec71fc47cb24f1003b9acdb92843"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g3e27cca7191234f2e8c95eaf3bc99a73">YAML_TIMESTAMP_TAG</a>&nbsp;&nbsp;&nbsp;&quot;tag:yaml.org,2002:timestamp&quot;</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag <code>!!timestamp</code> for date and time values.  <a href="group__nodes.html#g3e27cca7191234f2e8c95eaf3bc99a73"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#ga8284b30f9c9e3f10f6a69c9b882f417">YAML_SEQ_TAG</a>&nbsp;&nbsp;&nbsp;&quot;tag:yaml.org,2002:seq&quot;</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag <code>!!seq</code> is used to denote sequences.  <a href="group__nodes.html#ga8284b30f9c9e3f10f6a69c9b882f417"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g22ae99cf3ac014dd76873268fd068c12">YAML_MAP_TAG</a>&nbsp;&nbsp;&nbsp;&quot;tag:yaml.org,2002:map&quot;</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag <code>!!map</code> is used to denote mapping.  <a href="group__nodes.html#g22ae99cf3ac014dd76873268fd068c12"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#gf6b0c4e819b8f6915515a4f70065aaaa">YAML_DEFAULT_SCALAR_TAG</a>&nbsp;&nbsp;&nbsp;YAML_STR_TAG</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The default scalar tag is <code>!!str</code>.  <a href="group__nodes.html#gf6b0c4e819b8f6915515a4f70065aaaa"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#gf195b67002518702e27746d6b4da6124">YAML_DEFAULT_SEQUENCE_TAG</a>&nbsp;&nbsp;&nbsp;YAML_SEQ_TAG</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The default sequence tag is <code>!!seq</code>.  <a href="group__nodes.html#gf195b67002518702e27746d6b4da6124"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#gf7b1f8f0ce5665794510cd3841802a5f">YAML_DEFAULT_MAPPING_TAG</a>&nbsp;&nbsp;&nbsp;YAML_MAP_TAG</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The default mapping tag is <code>!!map</code>.  <a href="group__nodes.html#gf7b1f8f0ce5665794510cd3841802a5f"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The character type (UTF-8 octet).  <a href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <br class="typebreak">
-<a class="el" href="structyaml__version__directive__s.html">yaml_version_directive_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basic.html#g2fc55608333fbe6df17cf891be709b72">yaml_version_directive_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The version directive data.  <a href="group__basic.html#g2fc55608333fbe6df17cf891be709b72"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basic.html#g0b4bc4871b0c9104e32d40d5f3803674">yaml_tag_directive_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The tag directive data.  <a href="group__basic.html#g0b4bc4871b0c9104e32d40d5f3803674"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group__basic.html#gb88ee52b5d722e644c1cb4d1afcccdd9">yaml_encoding_e</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basic.html#g2170996d7e636397b5e6bc0c1b7df7c6">yaml_encoding_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The stream encoding.  <a href="group__basic.html#g2170996d7e636397b5e6bc0c1b7df7c6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group__basic.html#g912ad8c893126133fab5e4231db3017e">yaml_break_e</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basic.html#g64d1365e1acd4deeab50d6b48e39cb6d">yaml_break_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Line break types.  <a href="group__basic.html#g64d1365e1acd4deeab50d6b48e39cb6d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group__basic.html#g2efbcde2e82238117982b789c5a8ea01">yaml_error_type_e</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basic.html#g1a449f0c1b023e2ef1a596093c018e73">yaml_error_type_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Many bad things could happen with the parser and emitter.  <a href="group__basic.html#g1a449f0c1b023e2ef1a596093c018e73"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structyaml__mark__s.html">yaml_mark_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basic.html#g232eacba89691b841ba941338a302bfd">yaml_mark_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The pointer position.  <a href="group__basic.html#g232eacba89691b841ba941338a302bfd"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group__styles.html#g435ae8886b70c16830d853b6c566e2e0">yaml_scalar_style_e</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__styles.html#g3fa6405631e1afe5bd5c488a6c5e8065">yaml_scalar_style_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Scalar styles.  <a href="group__styles.html#g3fa6405631e1afe5bd5c488a6c5e8065"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group__styles.html#g5079a4ab96e398371c60423abd88ccc0">yaml_sequence_style_e</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__styles.html#g58a1123d271e56c72de6abf852ac4dc2">yaml_sequence_style_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sequence styles.  <a href="group__styles.html#g58a1123d271e56c72de6abf852ac4dc2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group__styles.html#g1efef592e2e3df6f00432c04ef77d98f">yaml_mapping_style_e</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__styles.html#gb47523846a5c5960e07367a28ea9750a">yaml_mapping_style_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Mapping styles.  <a href="group__styles.html#gb47523846a5c5960e07367a28ea9750a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group__tokens.html#gae955b10aa6b5f922de64873bf4ccdbd">yaml_token_type_e</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__tokens.html#gba51dda022dced02f8df2224ab7993f7">yaml_token_type_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Token types.  <a href="group__tokens.html#gba51dda022dced02f8df2224ab7993f7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structyaml__token__s.html">yaml_token_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__tokens.html#g1ed3dc460e62aee8270c5d63d5734bbb">yaml_token_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The token structure.  <a href="group__tokens.html#g1ed3dc460e62aee8270c5d63d5734bbb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group__events.html#g454fccebae859c188fe3e7fa3299577c">yaml_event_type_e</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#g8934661be36bd7c9d17a8af69eff89a1">yaml_event_type_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Event types.  <a href="group__events.html#g8934661be36bd7c9d17a8af69eff89a1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structyaml__event__s.html">yaml_event_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#g3b392d9716c4920cabefdd29e78dd542">yaml_event_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The event structure.  <a href="group__events.html#g3b392d9716c4920cabefdd29e78dd542"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group__nodes.html#g0897d4b6bdd1b56c7a5fa0ff17b4f798">yaml_node_type_e</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#gbe020d2fc42d3e896549e9f97da622d2">yaml_node_type_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Node types.  <a href="group__nodes.html#gbe020d2fc42d3e896549e9f97da622d2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structyaml__node__s.html">yaml_node_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g9eaaa233b120b9d9db47de93c294c40f">yaml_node_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The forward definition of a document node structure.  <a href="group__nodes.html#g9eaaa233b120b9d9db47de93c294c40f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g7cc3581582e778b00c04e99cd3656860">yaml_node_item_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An element of a sequence node.  <a href="group__nodes.html#g7cc3581582e778b00c04e99cd3656860"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structyaml__node__pair__s.html">yaml_node_pair_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g90f1c8b83c5c38dc4016afc1cc2050c4">yaml_node_pair_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An element of a mapping node.  <a href="group__nodes.html#g90f1c8b83c5c38dc4016afc1cc2050c4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structyaml__document__s.html">yaml_document_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#gd94e064e95baeb22e4f7acc7804e8479">yaml_document_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The document structure.  <a href="group__nodes.html#gd94e064e95baeb22e4f7acc7804e8479"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#g4982f7e4e001ddb47d2819f38f0cd9d6">yaml_read_handler_t</a> (void *data, unsigned char *buffer, size_t size, size_t *size_read)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The prototype of a read handler.  <a href="group__parser.html#g4982f7e4e001ddb47d2819f38f0cd9d6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ge5570fbb7ab7c8332cd666f3a9c26591"></a><!-- doxytag: member="yaml.h::yaml_simple_key_t" ref="ge5570fbb7ab7c8332cd666f3a9c26591" args="" -->
-typedef struct <a class="el" href="structyaml__simple__key__s.html">yaml_simple_key_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#ge5570fbb7ab7c8332cd666f3a9c26591">yaml_simple_key_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This structure holds information about a potential simple key. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g52b56d3e3cee0f9ba460978802a8c83b"></a><!-- doxytag: member="yaml.h::yaml_parser_state_t" ref="g52b56d3e3cee0f9ba460978802a8c83b" args="" -->
-typedef enum <a class="el" href="group__parser.html#gd39c19e7b0df6f542ca97806535b57c5">yaml_parser_state_e</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#g52b56d3e3cee0f9ba460978802a8c83b">yaml_parser_state_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The states of the parser. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g1434228b82f5f90d3c8ccda816e9ca9d"></a><!-- doxytag: member="yaml.h::yaml_alias_data_t" ref="g1434228b82f5f90d3c8ccda816e9ca9d" args="" -->
-typedef struct <a class="el" href="structyaml__alias__data__s.html">yaml_alias_data_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#g1434228b82f5f90d3c8ccda816e9ca9d">yaml_alias_data_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This structure holds aliases data. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structyaml__parser__s.html">yaml_parser_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#gfdc6319cb28a8b8034542b29be85b0c4">yaml_parser_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The parser structure.  <a href="group__parser.html#gfdc6319cb28a8b8034542b29be85b0c4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#g1669659aacbe631ad406c78fce1f5379">yaml_write_handler_t</a> (void *data, unsigned char *buffer, size_t size)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The prototype of a write handler.  <a href="group__emitter.html#g1669659aacbe631ad406c78fce1f5379"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group__emitter.html#g387b79da11c3941e43a56947263aa721">yaml_emitter_state_e</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#g0889461fa3efe8eee881aef48a4ba6b2">yaml_emitter_state_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The emitter states.  <a href="group__emitter.html#g0889461fa3efe8eee881aef48a4ba6b2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structyaml__emitter__s.html">yaml_emitter_s</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#g4ce3e054f0016c49d9e8c36d359e710b">yaml_emitter_t</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The emitter structure.  <a href="group__emitter.html#g4ce3e054f0016c49d9e8c36d359e710b"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basic.html#gb88ee52b5d722e644c1cb4d1afcccdd9">yaml_encoding_e</a> { <br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#ggb88ee52b5d722e644c1cb4d1afcccdd9b61d2a81b8e698e642ce6ad69612fa7f">YAML_ANY_ENCODING</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#ggb88ee52b5d722e644c1cb4d1afcccdd95bacbc5e68fc0c25baedf87e3be25a28">YAML_UTF8_ENCODING</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#ggb88ee52b5d722e644c1cb4d1afcccdd9c68c68725ec1f6492e59fd388fd123c9">YAML_UTF16LE_ENCODING</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#ggb88ee52b5d722e644c1cb4d1afcccdd99f4fcb99a71d3416239f343f1334780b">YAML_UTF16BE_ENCODING</a>
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The stream encoding.  <a href="group__basic.html#gb88ee52b5d722e644c1cb4d1afcccdd9">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basic.html#g912ad8c893126133fab5e4231db3017e">yaml_break_e</a> { <br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#gg912ad8c893126133fab5e4231db3017e052bd56adef565c33a86fcc05b49513f">YAML_ANY_BREAK</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#gg912ad8c893126133fab5e4231db3017e116a98ba4ed0bacfdf098a7d5beeb9d4">YAML_CR_BREAK</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#gg912ad8c893126133fab5e4231db3017e23bf395462dcd045e22303be6f3f7781">YAML_LN_BREAK</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#gg912ad8c893126133fab5e4231db3017e15f8daa406870ebfe82b85781c2468f3">YAML_CRLN_BREAK</a>
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Line break types.  <a href="group__basic.html#g912ad8c893126133fab5e4231db3017e">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basic.html#g2efbcde2e82238117982b789c5a8ea01">yaml_error_type_e</a> { <br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea0124cadfb5364769959ad8647649d1e86f">YAML_NO_ERROR</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea0157be0407d1f344206d9673c9571bde53">YAML_MEMORY_ERROR</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea019216f41a453dc36b090cdc1ca9f89637">YAML_READER_ERROR</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea016f8d865d9a25b385146660d8260d3d6f">YAML_SCANNER_ERROR</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea010e12c79d8586bc61470e3088b666078b">YAML_PARSER_ERROR</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea0143d6eb640e50a1b1ec843cc54ab15f2b">YAML_COMPOSER_ERROR</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea01e80fef003be3d7e72ed7acae7984004c">YAML_WRITER_ERROR</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__basic.html#gg2efbcde2e82238117982b789c5a8ea018ec99a26382dd2853a5550027f6e9db1">YAML_EMITTER_ERROR</a>
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Many bad things could happen with the parser and emitter.  <a href="group__basic.html#g2efbcde2e82238117982b789c5a8ea01">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__styles.html#g435ae8886b70c16830d853b6c566e2e0">yaml_scalar_style_e</a> { <br>
-&nbsp;&nbsp;<a class="el" href="group__styles.html#gg435ae8886b70c16830d853b6c566e2e0ead38b3e6846302ee032927267c34ae0">YAML_ANY_SCALAR_STYLE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__styles.html#gg435ae8886b70c16830d853b6c566e2e0fd62a761a36cf56e1f0414fb391db0e6">YAML_PLAIN_SCALAR_STYLE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__styles.html#gg435ae8886b70c16830d853b6c566e2e068a2af452008e3af3f6de14318dfb2c6">YAML_SINGLE_QUOTED_SCALAR_STYLE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__styles.html#gg435ae8886b70c16830d853b6c566e2e0f6fdfd14690361f4937d67d1f0f011d3">YAML_DOUBLE_QUOTED_SCALAR_STYLE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__styles.html#gg435ae8886b70c16830d853b6c566e2e0542d1ac1bf5c3434df3d2a757d0a8ca0">YAML_LITERAL_SCALAR_STYLE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__styles.html#gg435ae8886b70c16830d853b6c566e2e0a67c3de37dc127986b08bdbe07cee607">YAML_FOLDED_SCALAR_STYLE</a>
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Scalar styles.  <a href="group__styles.html#g435ae8886b70c16830d853b6c566e2e0">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__styles.html#g5079a4ab96e398371c60423abd88ccc0">yaml_sequence_style_e</a> { <br>
-&nbsp;&nbsp;<a class="el" href="group__styles.html#gg5079a4ab96e398371c60423abd88ccc05a10d6f70339876b76e5a002dd16212f">YAML_ANY_SEQUENCE_STYLE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__styles.html#gg5079a4ab96e398371c60423abd88ccc065f99099ef4ecdcf99bbdd798b5dcbb5">YAML_BLOCK_SEQUENCE_STYLE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__styles.html#gg5079a4ab96e398371c60423abd88ccc0e511554b654ebca464d1feec12501d80">YAML_FLOW_SEQUENCE_STYLE</a>
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sequence styles.  <a href="group__styles.html#g5079a4ab96e398371c60423abd88ccc0">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__styles.html#g1efef592e2e3df6f00432c04ef77d98f">yaml_mapping_style_e</a> { <br>
-&nbsp;&nbsp;<a class="el" href="group__styles.html#gg1efef592e2e3df6f00432c04ef77d98fc580a83312204ea142c3d08a4954a74a">YAML_ANY_MAPPING_STYLE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__styles.html#gg1efef592e2e3df6f00432c04ef77d98fd5e70fe97009c8247a45f4620f071874">YAML_BLOCK_MAPPING_STYLE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__styles.html#gg1efef592e2e3df6f00432c04ef77d98f4c5425077b0310cbf84e1d73e20b42d3">YAML_FLOW_MAPPING_STYLE</a>
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Mapping styles.  <a href="group__styles.html#g1efef592e2e3df6f00432c04ef77d98f">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__tokens.html#gae955b10aa6b5f922de64873bf4ccdbd">yaml_token_type_e</a> { <br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd66c1b8eec0cc6402c0fb4b2d1b017f92">YAML_NO_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdf5f42f2d5025e5629034848d2e1db6c9">YAML_STREAM_START_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd020a0a266ed7fc4902dd02750512dc19">YAML_STREAM_END_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbda15a96ec81c00c7db8f83628a89542e4">YAML_VERSION_DIRECTIVE_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbded517a61b868769e2bfced40678be414">YAML_TAG_DIRECTIVE_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdbcafcdb506886387f93cca734ddfd670">YAML_DOCUMENT_START_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd8d0908a82229f44d5ea92a2c380f4579">YAML_DOCUMENT_END_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd4bfddc427da159168ee47267cbeea94f">YAML_BLOCK_SEQUENCE_START_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd9a95db99bd99f7f9b4e1e879106297dc">YAML_BLOCK_MAPPING_START_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd439948425097b4fc853f39f0de14a5ff">YAML_BLOCK_END_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd862a2390be4abd59bb7bf55b18d9260c">YAML_FLOW_SEQUENCE_START_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdb3496580bee30936f756e0102e98f331">YAML_FLOW_SEQUENCE_END_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdff68a3f7c000c5294211eef8f4156100">YAML_FLOW_MAPPING_START_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdad99bf47234572d9d0eeea7669d1e769">YAML_FLOW_MAPPING_END_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbda9bdf1d6da41fcd4d356c7bcfa0227b4">YAML_BLOCK_ENTRY_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdf11ab5655350e4cf0559f78382daa93f">YAML_FLOW_ENTRY_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd94d701c1f5bb8a392bb45b7cbf4bc2a5">YAML_KEY_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbdac46e8a6a6e0614de322c7b53d785b4e">YAML_VALUE_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd080c398f6fc31f9ab35c7cf94cf948c2">YAML_ALIAS_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd7f0855938c5ccc4820b68ddd7985a5d0">YAML_ANCHOR_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd8f02c514b72f29bd3c26b7c832d8152d">YAML_TAG_TOKEN</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__tokens.html#ggae955b10aa6b5f922de64873bf4ccdbd107a78f31dd9857d06e9ead7936ea51e">YAML_SCALAR_TOKEN</a>
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Token types.  <a href="group__tokens.html#gae955b10aa6b5f922de64873bf4ccdbd">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#g454fccebae859c188fe3e7fa3299577c">yaml_event_type_e</a> { <br>
-&nbsp;&nbsp;<a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577cefda9f31823fe534f094f4241d5e5eac">YAML_NO_EVENT</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577ca742e9970f14d1fe7ce4d178d79e8465">YAML_STREAM_START_EVENT</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577c4a5e76ed540645102a13352af2503d3b">YAML_STREAM_END_EVENT</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577cf4ca2b0f538029cf054cdebd09d3d6d3">YAML_DOCUMENT_START_EVENT</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577c355ec471f963827c96512e529676276f">YAML_DOCUMENT_END_EVENT</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577c8c3ce47705cfbd49a87a32bdbe544eb7">YAML_ALIAS_EVENT</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577c8b16dc795bb228e33d647d1bdf683713">YAML_SCALAR_EVENT</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577cd90ccd43e238221f542defa3c8eaf093">YAML_SEQUENCE_START_EVENT</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577c2a8af98529275987d73eb307b6a92898">YAML_SEQUENCE_END_EVENT</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577c0f6982f6d1c325ee71af518c2c66dae8">YAML_MAPPING_START_EVENT</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__events.html#gg454fccebae859c188fe3e7fa3299577cdc3dc55f17056a657005fecfb80fbd30">YAML_MAPPING_END_EVENT</a>
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Event types.  <a href="group__events.html#g454fccebae859c188fe3e7fa3299577c">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g0897d4b6bdd1b56c7a5fa0ff17b4f798">yaml_node_type_e</a> { <br>
-&nbsp;&nbsp;<a class="el" href="group__nodes.html#gg0897d4b6bdd1b56c7a5fa0ff17b4f7980fa87c0e89c4d4136cb47165e6917739">YAML_NO_NODE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__nodes.html#gg0897d4b6bdd1b56c7a5fa0ff17b4f798413ec8ce6b728c9ace703d194b370a45">YAML_SCALAR_NODE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__nodes.html#gg0897d4b6bdd1b56c7a5fa0ff17b4f7986c03b52f7ee737982eac5e4001faac15">YAML_SEQUENCE_NODE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__nodes.html#gg0897d4b6bdd1b56c7a5fa0ff17b4f798c1a08580e3a70973583fc85e3e097ee6">YAML_MAPPING_NODE</a>
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Node types.  <a href="group__nodes.html#g0897d4b6bdd1b56c7a5fa0ff17b4f798">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#gd39c19e7b0df6f542ca97806535b57c5">yaml_parser_state_e</a> { <br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5e7b52e16bf002db5cf2944596d8c880e">YAML_PARSE_STREAM_START_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c58255725d67d5bd3574fc7df4db1c6c84">YAML_PARSE_IMPLICIT_DOCUMENT_START_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5a06d10f700d245caecfc6074a6c52fde">YAML_PARSE_DOCUMENT_START_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5e444c7652c8029b0ef80068eaaaa3d4d">YAML_PARSE_DOCUMENT_CONTENT_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5eef06d7f13fa4501146a5b9876c98239">YAML_PARSE_DOCUMENT_END_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5e1893c0835bacf05cdc21ed181fb75f1">YAML_PARSE_BLOCK_NODE_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5cbd390af0d3919fe0382d03c284ff3b5">YAML_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c55bb321f9d18c5b208a71c04bbcbd1d01">YAML_PARSE_FLOW_NODE_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c55bb5f95fc5f1a258ee8e9db0ed25b2d9">YAML_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c58a6cb1f12fe08eee7fc2fa854dbd5b1a">YAML_PARSE_BLOCK_SEQUENCE_ENTRY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5f7095f2141cf9887489e832f0ec61fbd">YAML_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5febcb5bbd67d112d9ecfa633155f0644">YAML_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c52df81c86e90b874b415ecb19e72efe45">YAML_PARSE_BLOCK_MAPPING_KEY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5e94acf5685fa1538b225413f154465c2">YAML_PARSE_BLOCK_MAPPING_VALUE_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c53f54830989c12cc4a63494df792eeb08">YAML_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c50e50f3841eb0d37ad159e64c4a9a1171">YAML_PARSE_FLOW_SEQUENCE_ENTRY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5563e11601cf3a1d2a3efc1feb1b696a3">YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c59e5ebb4bee4541e7a7025689c7fc66eb">YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5397fd87de9227c64e5308481930b5eeb">YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c591ac4bbb6629e2b768a3305fb707b7cd">YAML_PARSE_FLOW_MAPPING_FIRST_KEY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c5924f8eb891dc7527bf4db594a0b1bff8">YAML_PARSE_FLOW_MAPPING_KEY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c53ba351f6cfba029248ada2c0720246d4">YAML_PARSE_FLOW_MAPPING_VALUE_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c55a8ec0af5c3314c1ad5e0569b6a5d6d2">YAML_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__parser.html#ggd39c19e7b0df6f542ca97806535b57c551fd3d45693e2240251996def375a2a2">YAML_PARSE_END_STATE</a>
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The states of the parser.  <a href="group__parser.html#gd39c19e7b0df6f542ca97806535b57c5">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#g387b79da11c3941e43a56947263aa721">yaml_emitter_state_e</a> { <br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721a013a33dab710fe9a30ba014af27b81d">YAML_EMIT_STREAM_START_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721b1ae25188f02581a137f66c4b6e084ae">YAML_EMIT_FIRST_DOCUMENT_START_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721678d8c3146f0b2c84e0fc537a9b1109f">YAML_EMIT_DOCUMENT_START_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa7215ce3ed6155496a6fbd7384e310c58bec">YAML_EMIT_DOCUMENT_CONTENT_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721100cad4538be033202da4bb85f8443d3">YAML_EMIT_DOCUMENT_END_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa7215a36fc535f3a5720fbb86712959e5654">YAML_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721ded45f1dee80027d7b9c6ce061c08767">YAML_EMIT_FLOW_SEQUENCE_ITEM_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721b811f3d642dacc7c413af2c32356f894">YAML_EMIT_FLOW_MAPPING_FIRST_KEY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721babf835ee5cd4c6de2231e2a49e40626">YAML_EMIT_FLOW_MAPPING_KEY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721a6f687a6b57e727f0e7b7a2687ad7383">YAML_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721cb6dbcb535248b8fde779aeedc957b2e">YAML_EMIT_FLOW_MAPPING_VALUE_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa72168af7c090c6d0187788e390341f0cc4d">YAML_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa7218197c180c3cefee7b67304e17b52c5ff">YAML_EMIT_BLOCK_SEQUENCE_ITEM_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa721ee36d46c1facecfd73fab73e3343226e">YAML_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa72158495cae63b8c3d7c389b1281baeec05">YAML_EMIT_BLOCK_MAPPING_KEY_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa7214aa3c6bf2f2d976c47289c741d7a8704">YAML_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa7217e0f7fac64fc64bb2bc9fe2ec93ca564">YAML_EMIT_BLOCK_MAPPING_VALUE_STATE</a>, 
-<br>
-&nbsp;&nbsp;<a class="el" href="group__emitter.html#gg387b79da11c3941e43a56947263aa7212a0232912eaf4eeb06594ee6157dfbc0">YAML_EMIT_END_STATE</a>
-<br>
- }</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The emitter states.  <a href="group__emitter.html#g387b79da11c3941e43a56947263aa721">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#gf1ba5c1c34e809db5047d79a9fa85a73">yaml_get_version_string</a> (void)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the library version as a string.  <a href="group__version.html#gf1ba5c1c34e809db5047d79a9fa85a73"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__version.html#gec764c91f3e181ae63d3d59b7980fe78">yaml_get_version</a> (int *major, int *minor, int *patch)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the library version numbers.  <a href="group__version.html#gec764c91f3e181ae63d3d59b7980fe78"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__tokens.html#g3140131870e38e27f92a8fd286e5c004">yaml_token_delete</a> (<a class="el" href="structyaml__token__s.html">yaml_token_t</a> *token)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free any memory allocated for a token object.  <a href="group__tokens.html#g3140131870e38e27f92a8fd286e5c004"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#g0650d255b23d9aae13c839f4ab3ec2ab">yaml_stream_start_event_initialize</a> (<a class="el" href="structyaml__event__s.html">yaml_event_t</a> *event, <a class="el" href="group__basic.html#g2170996d7e636397b5e6bc0c1b7df7c6">yaml_encoding_t</a> encoding)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create the STREAM-START event.  <a href="group__events.html#g0650d255b23d9aae13c839f4ab3ec2ab"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#g84cf0c3ff01251c852c71624e64df9fe">yaml_stream_end_event_initialize</a> (<a class="el" href="structyaml__event__s.html">yaml_event_t</a> *event)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create the STREAM-END event.  <a href="group__events.html#g84cf0c3ff01251c852c71624e64df9fe"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#g527e89302e1c969fbea5aa45664bf51c">yaml_document_start_event_initialize</a> (<a class="el" href="structyaml__event__s.html">yaml_event_t</a> *event, <a class="el" href="structyaml__version__directive__s.html">yaml_version_directive_t</a> *version_directive, <a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *tag_directives_start, <a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *tag_directives_end, int implicit)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create the DOCUMENT-START event.  <a href="group__events.html#g527e89302e1c969fbea5aa45664bf51c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#g8bae16548ee88f8a5ca15204f8c30344">yaml_document_end_event_initialize</a> (<a class="el" href="structyaml__event__s.html">yaml_event_t</a> *event, int implicit)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create the DOCUMENT-END event.  <a href="group__events.html#g8bae16548ee88f8a5ca15204f8c30344"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#gde4c15b75eb9a8035e04d4f0dd23f005">yaml_alias_event_initialize</a> (<a class="el" href="structyaml__event__s.html">yaml_event_t</a> *event, <a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *anchor)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create an ALIAS event.  <a href="group__events.html#gde4c15b75eb9a8035e04d4f0dd23f005"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#gfc60a1a437385e19e6fb3be075958c8c">yaml_scalar_event_initialize</a> (<a class="el" href="structyaml__event__s.html">yaml_event_t</a> *event, <a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *anchor, <a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *tag, <a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *value, int length, int plain_implicit, int quoted_implicit, <a class="el" href="group__styles.html#g3fa6405631e1afe5bd5c488a6c5e8065">yaml_scalar_style_t</a> style)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a SCALAR event.  <a href="group__events.html#gfc60a1a437385e19e6fb3be075958c8c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#g53aea428c768d7b131923d08c904b4eb">yaml_sequence_start_event_initialize</a> (<a class="el" href="structyaml__event__s.html">yaml_event_t</a> *event, <a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *anchor, <a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *tag, int implicit, <a class="el" href="group__styles.html#g58a1123d271e56c72de6abf852ac4dc2">yaml_sequence_style_t</a> style)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a SEQUENCE-START event.  <a href="group__events.html#g53aea428c768d7b131923d08c904b4eb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#g99fdfa4b9d42b64d8171c9b22f334b1c">yaml_sequence_end_event_initialize</a> (<a class="el" href="structyaml__event__s.html">yaml_event_t</a> *event)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a SEQUENCE-END event.  <a href="group__events.html#g99fdfa4b9d42b64d8171c9b22f334b1c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#g0603cf8d20f0b6dfc3be04b6360134aa">yaml_mapping_start_event_initialize</a> (<a class="el" href="structyaml__event__s.html">yaml_event_t</a> *event, <a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *anchor, <a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *tag, int implicit, <a class="el" href="group__styles.html#gb47523846a5c5960e07367a28ea9750a">yaml_mapping_style_t</a> style)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a MAPPING-START event.  <a href="group__events.html#g0603cf8d20f0b6dfc3be04b6360134aa"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#g3afaf8b3aca2ec902a4e268f12adb0c2">yaml_mapping_end_event_initialize</a> (<a class="el" href="structyaml__event__s.html">yaml_event_t</a> *event)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a MAPPING-END event.  <a href="group__events.html#g3afaf8b3aca2ec902a4e268f12adb0c2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__events.html#g5330d62ef52856aa53188137cb93a6a1">yaml_event_delete</a> (<a class="el" href="structyaml__event__s.html">yaml_event_t</a> *event)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free any memory allocated for an event object.  <a href="group__events.html#g5330d62ef52856aa53188137cb93a6a1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g62a485c96f3b7962436a0da5e6f3cc89">yaml_document_initialize</a> (<a class="el" href="structyaml__document__s.html">yaml_document_t</a> *document, <a class="el" href="structyaml__version__directive__s.html">yaml_version_directive_t</a> *version_directive, <a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *tag_directives_start, <a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_t</a> *tag_directives_end, int start_implicit, int end_implicit)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a YAML document.  <a href="group__nodes.html#g62a485c96f3b7962436a0da5e6f3cc89"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g2754b1544fb4e110e83fafbc708b0672">yaml_document_delete</a> (<a class="el" href="structyaml__document__s.html">yaml_document_t</a> *document)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Delete a YAML document and all its nodes.  <a href="group__nodes.html#g2754b1544fb4e110e83fafbc708b0672"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__node__s.html">yaml_node_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#gfa1feabc9747dbded4dca24e27d3c21a">yaml_document_get_node</a> (<a class="el" href="structyaml__document__s.html">yaml_document_t</a> *document, int index)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a node of a YAML document.  <a href="group__nodes.html#gfa1feabc9747dbded4dca24e27d3c21a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structyaml__node__s.html">yaml_node_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g40eeaa68fb2f3be34c4fe34e7597d324">yaml_document_get_root_node</a> (<a class="el" href="structyaml__document__s.html">yaml_document_t</a> *document)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the root of a YAML document node.  <a href="group__nodes.html#g40eeaa68fb2f3be34c4fe34e7597d324"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g45dab8b983b58a005557d4b01f5057b0">yaml_document_add_scalar</a> (<a class="el" href="structyaml__document__s.html">yaml_document_t</a> *document, <a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *tag, <a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *value, int length, <a class="el" href="group__styles.html#g3fa6405631e1afe5bd5c488a6c5e8065">yaml_scalar_style_t</a> style)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a SCALAR node and attach it to the document.  <a href="group__nodes.html#g45dab8b983b58a005557d4b01f5057b0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g83b2f7fdd9a439397a42016bddad7786">yaml_document_add_sequence</a> (<a class="el" href="structyaml__document__s.html">yaml_document_t</a> *document, <a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *tag, <a class="el" href="group__styles.html#g58a1123d271e56c72de6abf852ac4dc2">yaml_sequence_style_t</a> style)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a SEQUENCE node and attach it to the document.  <a href="group__nodes.html#g83b2f7fdd9a439397a42016bddad7786"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g45a9f8288704f99cd81dc5cb31329d34">yaml_document_add_mapping</a> (<a class="el" href="structyaml__document__s.html">yaml_document_t</a> *document, <a class="el" href="group__basic.html#gf8657e81f0b8b05d1a081001fc6cb8bd">yaml_char_t</a> *tag, <a class="el" href="group__styles.html#gb47523846a5c5960e07367a28ea9750a">yaml_mapping_style_t</a> style)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a MAPPING node and attach it to the document.  <a href="group__nodes.html#g45a9f8288704f99cd81dc5cb31329d34"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g16435917cd6c0261cd390fa8cf173b1b">yaml_document_append_sequence_item</a> (<a class="el" href="structyaml__document__s.html">yaml_document_t</a> *document, int sequence, int item)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add an item to a SEQUENCE node.  <a href="group__nodes.html#g16435917cd6c0261cd390fa8cf173b1b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nodes.html#g2db27002d8a9ae06b1729d0ee06553d2">yaml_document_append_mapping_pair</a> (<a class="el" href="structyaml__document__s.html">yaml_document_t</a> *document, int mapping, int key, int value)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a pair of a key and a value to a MAPPING node.  <a href="group__nodes.html#g2db27002d8a9ae06b1729d0ee06553d2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#gcc37ceeb5847e38a3fe24eb0c9b53965">yaml_parser_initialize</a> (<a class="el" href="structyaml__parser__s.html">yaml_parser_t</a> *parser)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize a parser.  <a href="group__parser.html#gcc37ceeb5847e38a3fe24eb0c9b53965"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#ga27150107c4667c1024ec0651e2ac26b">yaml_parser_delete</a> (<a class="el" href="structyaml__parser__s.html">yaml_parser_t</a> *parser)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy a parser.  <a href="group__parser.html#ga27150107c4667c1024ec0651e2ac26b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#g08a94762bf5f4c61f72c1da0a407df0d">yaml_parser_set_input_string</a> (<a class="el" href="structyaml__parser__s.html">yaml_parser_t</a> *parser, const unsigned char *input, size_t size)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a string input.  <a href="group__parser.html#g08a94762bf5f4c61f72c1da0a407df0d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#gc3f00f8beb2365b1e4569692d64696b6">yaml_parser_set_input_file</a> (<a class="el" href="structyaml__parser__s.html">yaml_parser_t</a> *parser, FILE *file)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a file input.  <a href="group__parser.html#gc3f00f8beb2365b1e4569692d64696b6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#gbc67581bfa771a3e787d907d6914b8d9">yaml_parser_set_input</a> (<a class="el" href="structyaml__parser__s.html">yaml_parser_t</a> *parser, <a class="el" href="group__parser.html#g4982f7e4e001ddb47d2819f38f0cd9d6">yaml_read_handler_t</a> *handler, void *data)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a generic input handler.  <a href="group__parser.html#gbc67581bfa771a3e787d907d6914b8d9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#g9565b64975570ed34612a19adf02ae6a">yaml_parser_set_encoding</a> (<a class="el" href="structyaml__parser__s.html">yaml_parser_t</a> *parser, <a class="el" href="group__basic.html#g2170996d7e636397b5e6bc0c1b7df7c6">yaml_encoding_t</a> encoding)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the source encoding.  <a href="group__parser.html#g9565b64975570ed34612a19adf02ae6a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#g6c2144f131ebd600a075d4ba654540f7">yaml_parser_scan</a> (<a class="el" href="structyaml__parser__s.html">yaml_parser_t</a> *parser, <a class="el" href="structyaml__token__s.html">yaml_token_t</a> *token)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Scan the input stream and produce the next token.  <a href="group__parser.html#g6c2144f131ebd600a075d4ba654540f7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#g559312fb137533d8b7e07f224fe0ec8f">yaml_parser_parse</a> (<a class="el" href="structyaml__parser__s.html">yaml_parser_t</a> *parser, <a class="el" href="structyaml__event__s.html">yaml_event_t</a> *event)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parse the input stream and produce the next parsing event.  <a href="group__parser.html#g559312fb137533d8b7e07f224fe0ec8f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__parser.html#g9ef7d6e9494766b5880c389bc431d138">yaml_parser_load</a> (<a class="el" href="structyaml__parser__s.html">yaml_parser_t</a> *parser, <a class="el" href="structyaml__document__s.html">yaml_document_t</a> *document)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parse the input stream and produce the next YAML document.  <a href="group__parser.html#g9ef7d6e9494766b5880c389bc431d138"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#g83649205374285802fc27aa293ecd111">yaml_emitter_initialize</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize an emitter.  <a href="group__emitter.html#g83649205374285802fc27aa293ecd111"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#gd705212f3a5150e3f00075fd90bc8c3d">yaml_emitter_delete</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy an emitter.  <a href="group__emitter.html#gd705212f3a5150e3f00075fd90bc8c3d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#g62725c0f616f634588374d1a4c0ed35a">yaml_emitter_set_output_string</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter, unsigned char *output, size_t size, size_t *size_written)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a string output.  <a href="group__emitter.html#g62725c0f616f634588374d1a4c0ed35a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#gf7610c61b303bde9c701024c10ece024">yaml_emitter_set_output_file</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter, FILE *file)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a file output.  <a href="group__emitter.html#gf7610c61b303bde9c701024c10ece024"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#gc85a6a212ed7b469fb426a3451d15922">yaml_emitter_set_output</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter, <a class="el" href="group__emitter.html#g1669659aacbe631ad406c78fce1f5379">yaml_write_handler_t</a> *handler, void *data)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a generic output handler.  <a href="group__emitter.html#gc85a6a212ed7b469fb426a3451d15922"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#gbc22888ec8bf942199acbf38f7a0b9bb">yaml_emitter_set_encoding</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter, <a class="el" href="group__basic.html#g2170996d7e636397b5e6bc0c1b7df7c6">yaml_encoding_t</a> encoding)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the output encoding.  <a href="group__emitter.html#gbc22888ec8bf942199acbf38f7a0b9bb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#g62713a8130e11d95cbefa95a2eb3ac4b">yaml_emitter_set_canonical</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter, int canonical)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set if the output should be in the "canonical" format as in the YAML specification.  <a href="group__emitter.html#g62713a8130e11d95cbefa95a2eb3ac4b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#g07eca3c344053a9028b4a84291cdf4d7">yaml_emitter_set_indent</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter, int indent)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the intendation increment.  <a href="group__emitter.html#g07eca3c344053a9028b4a84291cdf4d7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#ga91ae0fa8af5ab67e64567e08f4458c2">yaml_emitter_set_width</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter, int width)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the preferred line width.  <a href="group__emitter.html#ga91ae0fa8af5ab67e64567e08f4458c2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#ga59e7dcf24cb9b614c32af6c3e949fc3">yaml_emitter_set_unicode</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter, int unicode)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set if unescaped non-ASCII characters are allowed.  <a href="group__emitter.html#ga59e7dcf24cb9b614c32af6c3e949fc3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#g04b5494f0b8244eec359579c31d5e20c">yaml_emitter_set_break</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter, <a class="el" href="group__basic.html#g64d1365e1acd4deeab50d6b48e39cb6d">yaml_break_t</a> line_break)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the preferred line break.  <a href="group__emitter.html#g04b5494f0b8244eec359579c31d5e20c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#g4d6c0f8e712797e2660e69479fdae433">yaml_emitter_emit</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter, <a class="el" href="structyaml__event__s.html">yaml_event_t</a> *event)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Emit an event.  <a href="group__emitter.html#g4d6c0f8e712797e2660e69479fdae433"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#ge323c34e378040106f24c7b5ab834b16">yaml_emitter_open</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Start a YAML stream.  <a href="group__emitter.html#ge323c34e378040106f24c7b5ab834b16"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#ga91442864679280985df14b2d96b8c42">yaml_emitter_close</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Finish a YAML stream.  <a href="group__emitter.html#ga91442864679280985df14b2d96b8c42"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#g5f0306abe9bff373b5bc339913b3769c">yaml_emitter_dump</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter, <a class="el" href="structyaml__document__s.html">yaml_document_t</a> *document)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Emit a YAML document.  <a href="group__emitter.html#g5f0306abe9bff373b5bc339913b3769c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emitter.html#gcaf24456e2bf85bc5654cbd7d828055f">yaml_emitter_flush</a> (<a class="el" href="structyaml__emitter__s.html">yaml_emitter_t</a> *emitter)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Flush the accumulated characters to the output.  <a href="group__emitter.html#gcaf24456e2bf85bc5654cbd7d828055f"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Public interface for libyaml. 
-<p>
-Include the header file with the code: <div class="fragment"><pre class="fragment"><span class="preprocessor"> #include &lt;<a class="code" href="yaml_8h.html" title="Public interface for libyaml.">yaml.h</a>&gt;</span>
-</pre></div> </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 30 22:52:14 2009 for yaml by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
-</body>
-</html>
diff --git a/yaml-0.1.3/include/Makefile.am b/yaml-0.1.3/include/Makefile.am
deleted file mode 100644
index f81863c..0000000
--- a/yaml-0.1.3/include/Makefile.am
+++ /dev/null
@@ -1,17 +0,0 @@
-INCLUDES = yaml.h
-DOXYGEN_CFG = $(top_srcdir)/doc/doxygen.cfg
-
-nobase_include_HEADERS = $(INCLUDES)
-
-if DOXYGEN
-
-html: $(INCLUDES) $(DOXYGEN_CFG)
-	PACKAGE=$(PACKAGE) VERSION=$(VERSION) top_srcdir=$(top_srcdir) top_builddir=$(top_builddir) doxygen $(DOXYGEN_CFG)
-
-endif
-
-maintainer-clean-local:
-	-rm -rf $(top_builddir)/doc/html
-
-dist-hook: html
-	cp -a $(top_builddir)/doc/html $(top_distdir)/doc
diff --git a/yaml-0.1.3/include/Makefile.in b/yaml-0.1.3/include/Makefile.in
deleted file mode 100644
index 33b4a0f..0000000
--- a/yaml-0.1.3/include/Makefile.in
+++ /dev/null
@@ -1,424 +0,0 @@
-# Makefile.in generated by automake 1.10.2 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = include
-DIST_COMMON = $(nobase_include_HEADERS) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-SOURCES =
-DIST_SOURCES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(includedir)"
-nobase_includeHEADERS_INSTALL = $(install_sh_DATA)
-HEADERS = $(nobase_include_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DOXYGEN = @DOXYGEN@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-YAML_LT_AGE = @YAML_LT_AGE@
-YAML_LT_CURRENT = @YAML_LT_CURRENT@
-YAML_LT_RELEASE = @YAML_LT_RELEASE@
-YAML_LT_REVISION = @YAML_LT_REVISION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-INCLUDES = yaml.h
-DOXYGEN_CFG = $(top_srcdir)/doc/doxygen.cfg
-nobase_include_HEADERS = $(INCLUDES)
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  include/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  include/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-nobase_includeHEADERS: $(nobase_include_HEADERS)
-	@$(NORMAL_INSTALL)
-	test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
-	@$(am__vpath_adj_setup) \
-	list='$(nobase_include_HEADERS)'; for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  $(am__vpath_adj) \
-	  echo " $(nobase_includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \
-	  $(nobase_includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \
-	done
-
-uninstall-nobase_includeHEADERS:
-	@$(NORMAL_UNINSTALL)
-	@$(am__vpath_adj_setup) \
-	list='$(nobase_include_HEADERS)'; for p in $$list; do \
-	  $(am__vpath_adj) \
-	  echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(includedir)/$$f"; \
-	done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	tags=; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
-	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	tags=; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
-	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
-	    || exit 1; \
-	  fi; \
-	done
-	$(MAKE) $(AM_MAKEFLAGS) \
-	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
-	  dist-hook
-check-am: all-am
-check: check-am
-all-am: Makefile $(HEADERS)
-installdirs:
-	for dir in "$(DESTDIR)$(includedir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-@DOXYGEN_FALSE@html: html-am
-
-info: info-am
-
-info-am:
-
-install-data-am: install-nobase_includeHEADERS
-
-install-dvi: install-dvi-am
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-info: install-info-am
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-ps: install-ps-am
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic \
-	maintainer-clean-local
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-nobase_includeHEADERS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool ctags dist-hook distclean distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-nobase_includeHEADERS \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic \
-	maintainer-clean-local mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
-	uninstall-am uninstall-nobase_includeHEADERS
-
-
-@DOXYGEN_TRUE@html: $(INCLUDES) $(DOXYGEN_CFG)
-@DOXYGEN_TRUE@	PACKAGE=$(PACKAGE) VERSION=$(VERSION) top_srcdir=$(top_srcdir) top_builddir=$(top_builddir) doxygen $(DOXYGEN_CFG)
-
-maintainer-clean-local:
-	-rm -rf $(top_builddir)/doc/html
-
-dist-hook: html
-	cp -a $(top_builddir)/doc/html $(top_distdir)/doc
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/yaml-0.1.3/src/Makefile.am b/yaml-0.1.3/src/Makefile.am
deleted file mode 100644
index 724a1b2..0000000
--- a/yaml-0.1.3/src/Makefile.am
+++ /dev/null
@@ -1,4 +0,0 @@
-AM_CPPFLAGS = -I$(top_srcdir)/include
-lib_LTLIBRARIES = libyaml.la
-libyaml_la_SOURCES = yaml_private.h api.c reader.c scanner.c parser.c loader.c writer.c emitter.c dumper.c
-libyaml_la_LDFLAGS = -release $(YAML_LT_RELEASE) -version-info $(YAML_LT_CURRENT):$(YAML_LT_REVISION):$(YAML_LT_AGE)
diff --git a/yaml-0.1.3/src/Makefile.in b/yaml-0.1.3/src/Makefile.in
deleted file mode 100644
index a5ae9fe..0000000
--- a/yaml-0.1.3/src/Makefile.in
+++ /dev/null
@@ -1,482 +0,0 @@
-# Makefile.in generated by automake 1.10.2 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = src
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(libdir)"
-libLTLIBRARIES_INSTALL = $(INSTALL)
-LTLIBRARIES = $(lib_LTLIBRARIES)
-libyaml_la_LIBADD =
-am_libyaml_la_OBJECTS = api.lo reader.lo scanner.lo parser.lo \
-	loader.lo writer.lo emitter.lo dumper.lo
-libyaml_la_OBJECTS = $(am_libyaml_la_OBJECTS)
-libyaml_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(libyaml_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
-SOURCES = $(libyaml_la_SOURCES)
-DIST_SOURCES = $(libyaml_la_SOURCES)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DOXYGEN = @DOXYGEN@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-YAML_LT_AGE = @YAML_LT_AGE@
-YAML_LT_CURRENT = @YAML_LT_CURRENT@
-YAML_LT_RELEASE = @YAML_LT_RELEASE@
-YAML_LT_REVISION = @YAML_LT_REVISION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AM_CPPFLAGS = -I$(top_srcdir)/include
-lib_LTLIBRARIES = libyaml.la
-libyaml_la_SOURCES = yaml_private.h api.c reader.c scanner.c parser.c loader.c writer.c emitter.c dumper.c
-libyaml_la_LDFLAGS = -release $(YAML_LT_RELEASE) -version-info $(YAML_LT_CURRENT):$(YAML_LT_REVISION):$(YAML_LT_AGE)
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
-	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-	  if test -f $$p; then \
-	    f=$(am__strip_dir) \
-	    echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
-	    $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
-	  else :; fi; \
-	done
-
-uninstall-libLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-	  p=$(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
-	done
-
-clean-libLTLIBRARIES:
-	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libyaml.la: $(libyaml_la_OBJECTS) $(libyaml_la_DEPENDENCIES) 
-	$(libyaml_la_LINK) -rpath $(libdir) $(libyaml_la_OBJECTS) $(libyaml_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/api.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dumper.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/emitter.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loader.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parser.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reader.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scanner.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writer.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	tags=; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
-	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	tags=; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
-	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES)
-installdirs:
-	for dir in "$(DESTDIR)$(libdir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-exec-am: install-libLTLIBRARIES
-
-install-html: install-html-am
-
-install-info: install-info-am
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-ps: install-ps-am
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-libLTLIBRARIES
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libLTLIBRARIES clean-libtool ctags distclean \
-	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am \
-	install-libLTLIBRARIES install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am uninstall-libLTLIBRARIES
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/yaml-0.1.3/src/dumper.c b/yaml-0.1.3/src/dumper.c
deleted file mode 100644
index 203c6a7..0000000
--- a/yaml-0.1.3/src/dumper.c
+++ /dev/null
@@ -1,394 +0,0 @@
-
-#include "yaml_private.h"
-
-/*
- * API functions.
- */
-
-YAML_DECLARE(int)
-yaml_emitter_open(yaml_emitter_t *emitter);
-
-YAML_DECLARE(int)
-yaml_emitter_close(yaml_emitter_t *emitter);
-
-YAML_DECLARE(int)
-yaml_emitter_dump(yaml_emitter_t *emitter, yaml_document_t *document);
-
-/*
- * Clean up functions.
- */
-
-static void
-yaml_emitter_delete_document_and_anchors(yaml_emitter_t *emitter);
-
-/*
- * Anchor functions.
- */
-
-static void
-yaml_emitter_anchor_node(yaml_emitter_t *emitter, int index);
-
-static yaml_char_t *
-yaml_emitter_generate_anchor(yaml_emitter_t *emitter, int anchor_id);
-
-
-/*
- * Serialize functions.
- */
-
-static int
-yaml_emitter_dump_node(yaml_emitter_t *emitter, int index);
-
-static int
-yaml_emitter_dump_alias(yaml_emitter_t *emitter, yaml_char_t *anchor);
-
-static int
-yaml_emitter_dump_scalar(yaml_emitter_t *emitter, yaml_node_t *node,
-        yaml_char_t *anchor);
-
-static int
-yaml_emitter_dump_sequence(yaml_emitter_t *emitter, yaml_node_t *node,
-        yaml_char_t *anchor);
-
-static int
-yaml_emitter_dump_mapping(yaml_emitter_t *emitter, yaml_node_t *node,
-        yaml_char_t *anchor);
-
-/*
- * Issue a STREAM-START event.
- */
-
-YAML_DECLARE(int)
-yaml_emitter_open(yaml_emitter_t *emitter)
-{
-    yaml_event_t event;
-    yaml_mark_t mark = { 0, 0, 0 };
-
-    assert(emitter);            /* Non-NULL emitter object is required. */
-    assert(!emitter->opened);   /* Emitter should not be opened yet. */
-
-    STREAM_START_EVENT_INIT(event, YAML_ANY_ENCODING, mark, mark);
-
-    if (!yaml_emitter_emit(emitter, &event)) {
-        return 0;
-    }
-
-    emitter->opened = 1;
-
-    return 1;
-}
-
-/*
- * Issue a STREAM-END event.
- */
-
-YAML_DECLARE(int)
-yaml_emitter_close(yaml_emitter_t *emitter)
-{
-    yaml_event_t event;
-    yaml_mark_t mark = { 0, 0, 0 };
-
-    assert(emitter);            /* Non-NULL emitter object is required. */
-    assert(emitter->opened);    /* Emitter should be opened. */
-
-    if (emitter->closed) return 1;
-
-    STREAM_END_EVENT_INIT(event, mark, mark);
-
-    if (!yaml_emitter_emit(emitter, &event)) {
-        return 0;
-    }
-
-    emitter->closed = 1;
-
-    return 1;
-}
-
-/*
- * Dump a YAML document.
- */
-
-YAML_DECLARE(int)
-yaml_emitter_dump(yaml_emitter_t *emitter, yaml_document_t *document)
-{
-    yaml_event_t event;
-    yaml_mark_t mark = { 0, 0, 0 };
-
-    assert(emitter);            /* Non-NULL emitter object is required. */
-    assert(document);           /* Non-NULL emitter object is expected. */
-
-    emitter->document = document;
-
-    if (!emitter->opened) {
-        if (!yaml_emitter_open(emitter)) goto error;
-    }
-
-    if (STACK_EMPTY(emitter, document->nodes)) {
-        if (!yaml_emitter_close(emitter)) goto error;
-        yaml_emitter_delete_document_and_anchors(emitter);
-        return 1;
-    }
-
-    assert(emitter->opened);    /* Emitter should be opened. */
-
-    emitter->anchors = yaml_malloc(sizeof(*(emitter->anchors))
-            * (document->nodes.top - document->nodes.start));
-    if (!emitter->anchors) goto error;
-    memset(emitter->anchors, 0, sizeof(*(emitter->anchors))
-            * (document->nodes.top - document->nodes.start));
-
-    DOCUMENT_START_EVENT_INIT(event, document->version_directive,
-            document->tag_directives.start, document->tag_directives.end,
-            document->start_implicit, mark, mark);
-    if (!yaml_emitter_emit(emitter, &event)) goto error;
-
-    yaml_emitter_anchor_node(emitter, 1);
-    if (!yaml_emitter_dump_node(emitter, 1)) goto error;
-
-    DOCUMENT_END_EVENT_INIT(event, document->end_implicit, mark, mark);
-    if (!yaml_emitter_emit(emitter, &event)) goto error;
-
-    yaml_emitter_delete_document_and_anchors(emitter);
-
-    return 1;
-
-error:
-
-    yaml_emitter_delete_document_and_anchors(emitter);
-
-    return 0;
-}
-
-/*
- * Clean up the emitter object after a document is dumped.
- */
-
-static void
-yaml_emitter_delete_document_and_anchors(yaml_emitter_t *emitter)
-{
-    int index;
-
-    if (!emitter->anchors) {
-        yaml_document_delete(emitter->document);
-        emitter->document = NULL;
-        return;
-    }
-
-    for (index = 0; emitter->document->nodes.start + index
-            < emitter->document->nodes.top; index ++) {
-        yaml_node_t node = emitter->document->nodes.start[index];
-        if (!emitter->anchors[index].serialized) {
-            yaml_free(node.tag);
-            if (node.type == YAML_SCALAR_NODE) {
-                yaml_free(node.data.scalar.value);
-            }
-        }
-        if (node.type == YAML_SEQUENCE_NODE) {
-            STACK_DEL(emitter, node.data.sequence.items);
-        }
-        if (node.type == YAML_MAPPING_NODE) {
-            STACK_DEL(emitter, node.data.mapping.pairs);
-        }
-    }
-
-    STACK_DEL(emitter, emitter->document->nodes);
-    yaml_free(emitter->anchors);
-
-    emitter->anchors = NULL;
-    emitter->last_anchor_id = 0;
-    emitter->document = NULL;
-}
-
-/*
- * Check the references of a node and assign the anchor id if needed.
- */
-
-static void
-yaml_emitter_anchor_node(yaml_emitter_t *emitter, int index)
-{
-    yaml_node_t *node = emitter->document->nodes.start + index - 1;
-    yaml_node_item_t *item;
-    yaml_node_pair_t *pair;
-
-    emitter->anchors[index-1].references ++;
-
-    if (emitter->anchors[index-1].references == 1) {
-        switch (node->type) {
-            case YAML_SEQUENCE_NODE:
-                for (item = node->data.sequence.items.start;
-                        item < node->data.sequence.items.top; item ++) {
-                    yaml_emitter_anchor_node(emitter, *item);
-                }
-                break;
-            case YAML_MAPPING_NODE:
-                for (pair = node->data.mapping.pairs.start;
-                        pair < node->data.mapping.pairs.top; pair ++) {
-                    yaml_emitter_anchor_node(emitter, pair->key);
-                    yaml_emitter_anchor_node(emitter, pair->value);
-                }
-                break;
-            default:
-                break;
-        }
-    }
-
-    else if (emitter->anchors[index-1].references == 2) {
-        emitter->anchors[index-1].anchor = (++ emitter->last_anchor_id);
-    }
-}
-
-/*
- * Generate a textual representation for an anchor.
- */
-
-#define ANCHOR_TEMPLATE         "id%03d"
-#define ANCHOR_TEMPLATE_LENGTH  16
-
-static yaml_char_t *
-yaml_emitter_generate_anchor(yaml_emitter_t *emitter, int anchor_id)
-{
-    yaml_char_t *anchor = yaml_malloc(ANCHOR_TEMPLATE_LENGTH);
-
-    if (!anchor) return NULL;
-
-    sprintf((char *)anchor, ANCHOR_TEMPLATE, anchor_id);
-
-    return anchor;
-}
-
-/*
- * Serialize a node.
- */
-
-static int
-yaml_emitter_dump_node(yaml_emitter_t *emitter, int index)
-{
-    yaml_node_t *node = emitter->document->nodes.start + index - 1;
-    int anchor_id = emitter->anchors[index-1].anchor;
-    yaml_char_t *anchor = NULL;
-
-    if (anchor_id) {
-        anchor = yaml_emitter_generate_anchor(emitter, anchor_id);
-        if (!anchor) return 0;
-    }
-
-    if (emitter->anchors[index-1].serialized) {
-        return yaml_emitter_dump_alias(emitter, anchor);
-    }
-
-    emitter->anchors[index-1].serialized = 1;
-
-    switch (node->type) {
-        case YAML_SCALAR_NODE:
-            return yaml_emitter_dump_scalar(emitter, node, anchor);
-        case YAML_SEQUENCE_NODE:
-            return yaml_emitter_dump_sequence(emitter, node, anchor);
-        case YAML_MAPPING_NODE:
-            return yaml_emitter_dump_mapping(emitter, node, anchor);
-        default:
-            assert(0);      /* Could not happen. */
-            break;
-    }
-
-    return 0;       /* Could not happen. */
-}
-
-/*
- * Serialize an alias.
- */
-
-static int
-yaml_emitter_dump_alias(yaml_emitter_t *emitter, yaml_char_t *anchor)
-{
-    yaml_event_t event;
-    yaml_mark_t mark  = { 0, 0, 0 };
-
-    ALIAS_EVENT_INIT(event, anchor, mark, mark);
-
-    return yaml_emitter_emit(emitter, &event);
-}
-
-/*
- * Serialize a scalar.
- */
-
-static int
-yaml_emitter_dump_scalar(yaml_emitter_t *emitter, yaml_node_t *node,
-        yaml_char_t *anchor)
-{
-    yaml_event_t event;
-    yaml_mark_t mark  = { 0, 0, 0 };
-
-    int plain_implicit = (strcmp((char *)node->tag,
-                YAML_DEFAULT_SCALAR_TAG) == 0);
-    int quoted_implicit = (strcmp((char *)node->tag,
-                YAML_DEFAULT_SCALAR_TAG) == 0);
-
-    SCALAR_EVENT_INIT(event, anchor, node->tag, node->data.scalar.value,
-            node->data.scalar.length, plain_implicit, quoted_implicit,
-            node->data.scalar.style, mark, mark);
-
-    return yaml_emitter_emit(emitter, &event);
-}
-
-/*
- * Serialize a sequence.
- */
-
-static int
-yaml_emitter_dump_sequence(yaml_emitter_t *emitter, yaml_node_t *node,
-        yaml_char_t *anchor)
-{
-    yaml_event_t event;
-    yaml_mark_t mark  = { 0, 0, 0 };
-
-    int implicit = (strcmp((char *)node->tag, YAML_DEFAULT_SEQUENCE_TAG) == 0);
-
-    yaml_node_item_t *item;
-
-    SEQUENCE_START_EVENT_INIT(event, anchor, node->tag, implicit,
-            node->data.sequence.style, mark, mark);
-    if (!yaml_emitter_emit(emitter, &event)) return 0;
-
-    for (item = node->data.sequence.items.start;
-            item < node->data.sequence.items.top; item ++) {
-        if (!yaml_emitter_dump_node(emitter, *item)) return 0;
-    }
-
-    SEQUENCE_END_EVENT_INIT(event, mark, mark);
-    if (!yaml_emitter_emit(emitter, &event)) return 0;
-
-    return 1;
-}
-
-/*
- * Serialize a mapping.
- */
-
-static int
-yaml_emitter_dump_mapping(yaml_emitter_t *emitter, yaml_node_t *node,
-        yaml_char_t *anchor)
-{
-    yaml_event_t event;
-    yaml_mark_t mark  = { 0, 0, 0 };
-
-    int implicit = (strcmp((char *)node->tag, YAML_DEFAULT_MAPPING_TAG) == 0);
-
-    yaml_node_pair_t *pair;
-
-    MAPPING_START_EVENT_INIT(event, anchor, node->tag, implicit,
-            node->data.mapping.style, mark, mark);
-    if (!yaml_emitter_emit(emitter, &event)) return 0;
-
-    for (pair = node->data.mapping.pairs.start;
-            pair < node->data.mapping.pairs.top; pair ++) {
-        if (!yaml_emitter_dump_node(emitter, pair->key)) return 0;
-        if (!yaml_emitter_dump_node(emitter, pair->value)) return 0;
-    }
-
-    MAPPING_END_EVENT_INIT(event, mark, mark);
-    if (!yaml_emitter_emit(emitter, &event)) return 0;
-
-    return 1;
-}
-
diff --git a/yaml-0.1.3/tests/Makefile.am b/yaml-0.1.3/tests/Makefile.am
deleted file mode 100644
index 72e84d2..0000000
--- a/yaml-0.1.3/tests/Makefile.am
+++ /dev/null
@@ -1,8 +0,0 @@
-AM_CPPFLAGS = -I$(top_srcdir)/include
-#AM_CFLAGS = -Wno-pointer-sign
-LDADD = $(top_builddir)/src/libyaml.la
-TESTS = test-version test-reader
-check_PROGRAMS = test-version test-reader
-noinst_PROGRAMS = run-scanner run-parser run-loader run-emitter run-dumper	\
-				  example-reformatter example-reformatter-alt	\
-				  example-deconstructor example-deconstructor-alt
diff --git a/yaml-0.1.3/tests/Makefile.in b/yaml-0.1.3/tests/Makefile.in
deleted file mode 100644
index 2b07589..0000000
--- a/yaml-0.1.3/tests/Makefile.in
+++ /dev/null
@@ -1,631 +0,0 @@
-# Makefile.in generated by automake 1.10.2 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-TESTS = test-version$(EXEEXT) test-reader$(EXEEXT)
-check_PROGRAMS = test-version$(EXEEXT) test-reader$(EXEEXT)
-noinst_PROGRAMS = run-scanner$(EXEEXT) run-parser$(EXEEXT) \
-	run-loader$(EXEEXT) run-emitter$(EXEEXT) run-dumper$(EXEEXT) \
-	example-reformatter$(EXEEXT) example-reformatter-alt$(EXEEXT) \
-	example-deconstructor$(EXEEXT) \
-	example-deconstructor-alt$(EXEEXT)
-subdir = tests
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-example_deconstructor_SOURCES = example-deconstructor.c
-example_deconstructor_OBJECTS = example-deconstructor.$(OBJEXT)
-example_deconstructor_LDADD = $(LDADD)
-example_deconstructor_DEPENDENCIES = $(top_builddir)/src/libyaml.la
-example_deconstructor_alt_SOURCES = example-deconstructor-alt.c
-example_deconstructor_alt_OBJECTS =  \
-	example-deconstructor-alt.$(OBJEXT)
-example_deconstructor_alt_LDADD = $(LDADD)
-example_deconstructor_alt_DEPENDENCIES =  \
-	$(top_builddir)/src/libyaml.la
-example_reformatter_SOURCES = example-reformatter.c
-example_reformatter_OBJECTS = example-reformatter.$(OBJEXT)
-example_reformatter_LDADD = $(LDADD)
-example_reformatter_DEPENDENCIES = $(top_builddir)/src/libyaml.la
-example_reformatter_alt_SOURCES = example-reformatter-alt.c
-example_reformatter_alt_OBJECTS = example-reformatter-alt.$(OBJEXT)
-example_reformatter_alt_LDADD = $(LDADD)
-example_reformatter_alt_DEPENDENCIES = $(top_builddir)/src/libyaml.la
-run_dumper_SOURCES = run-dumper.c
-run_dumper_OBJECTS = run-dumper.$(OBJEXT)
-run_dumper_LDADD = $(LDADD)
-run_dumper_DEPENDENCIES = $(top_builddir)/src/libyaml.la
-run_emitter_SOURCES = run-emitter.c
-run_emitter_OBJECTS = run-emitter.$(OBJEXT)
-run_emitter_LDADD = $(LDADD)
-run_emitter_DEPENDENCIES = $(top_builddir)/src/libyaml.la
-run_loader_SOURCES = run-loader.c
-run_loader_OBJECTS = run-loader.$(OBJEXT)
-run_loader_LDADD = $(LDADD)
-run_loader_DEPENDENCIES = $(top_builddir)/src/libyaml.la
-run_parser_SOURCES = run-parser.c
-run_parser_OBJECTS = run-parser.$(OBJEXT)
-run_parser_LDADD = $(LDADD)
-run_parser_DEPENDENCIES = $(top_builddir)/src/libyaml.la
-run_scanner_SOURCES = run-scanner.c
-run_scanner_OBJECTS = run-scanner.$(OBJEXT)
-run_scanner_LDADD = $(LDADD)
-run_scanner_DEPENDENCIES = $(top_builddir)/src/libyaml.la
-test_reader_SOURCES = test-reader.c
-test_reader_OBJECTS = test-reader.$(OBJEXT)
-test_reader_LDADD = $(LDADD)
-test_reader_DEPENDENCIES = $(top_builddir)/src/libyaml.la
-test_version_SOURCES = test-version.c
-test_version_OBJECTS = test-version.$(OBJEXT)
-test_version_LDADD = $(LDADD)
-test_version_DEPENDENCIES = $(top_builddir)/src/libyaml.la
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
-SOURCES = example-deconstructor.c example-deconstructor-alt.c \
-	example-reformatter.c example-reformatter-alt.c run-dumper.c \
-	run-emitter.c run-loader.c run-parser.c run-scanner.c \
-	test-reader.c test-version.c
-DIST_SOURCES = example-deconstructor.c example-deconstructor-alt.c \
-	example-reformatter.c example-reformatter-alt.c run-dumper.c \
-	run-emitter.c run-loader.c run-parser.c run-scanner.c \
-	test-reader.c test-version.c
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DOXYGEN = @DOXYGEN@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-YAML_LT_AGE = @YAML_LT_AGE@
-YAML_LT_CURRENT = @YAML_LT_CURRENT@
-YAML_LT_RELEASE = @YAML_LT_RELEASE@
-YAML_LT_REVISION = @YAML_LT_REVISION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AM_CPPFLAGS = -I$(top_srcdir)/include
-#AM_CFLAGS = -Wno-pointer-sign
-LDADD = $(top_builddir)/src/libyaml.la
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  tests/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  tests/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-clean-checkPROGRAMS:
-	@list='$(check_PROGRAMS)'; for p in $$list; do \
-	  f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
-	  echo " rm -f $$p $$f"; \
-	  rm -f $$p $$f ; \
-	done
-
-clean-noinstPROGRAMS:
-	@list='$(noinst_PROGRAMS)'; for p in $$list; do \
-	  f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
-	  echo " rm -f $$p $$f"; \
-	  rm -f $$p $$f ; \
-	done
-example-deconstructor$(EXEEXT): $(example_deconstructor_OBJECTS) $(example_deconstructor_DEPENDENCIES) 
-	@rm -f example-deconstructor$(EXEEXT)
-	$(LINK) $(example_deconstructor_OBJECTS) $(example_deconstructor_LDADD) $(LIBS)
-example-deconstructor-alt$(EXEEXT): $(example_deconstructor_alt_OBJECTS) $(example_deconstructor_alt_DEPENDENCIES) 
-	@rm -f example-deconstructor-alt$(EXEEXT)
-	$(LINK) $(example_deconstructor_alt_OBJECTS) $(example_deconstructor_alt_LDADD) $(LIBS)
-example-reformatter$(EXEEXT): $(example_reformatter_OBJECTS) $(example_reformatter_DEPENDENCIES) 
-	@rm -f example-reformatter$(EXEEXT)
-	$(LINK) $(example_reformatter_OBJECTS) $(example_reformatter_LDADD) $(LIBS)
-example-reformatter-alt$(EXEEXT): $(example_reformatter_alt_OBJECTS) $(example_reformatter_alt_DEPENDENCIES) 
-	@rm -f example-reformatter-alt$(EXEEXT)
-	$(LINK) $(example_reformatter_alt_OBJECTS) $(example_reformatter_alt_LDADD) $(LIBS)
-run-dumper$(EXEEXT): $(run_dumper_OBJECTS) $(run_dumper_DEPENDENCIES) 
-	@rm -f run-dumper$(EXEEXT)
-	$(LINK) $(run_dumper_OBJECTS) $(run_dumper_LDADD) $(LIBS)
-run-emitter$(EXEEXT): $(run_emitter_OBJECTS) $(run_emitter_DEPENDENCIES) 
-	@rm -f run-emitter$(EXEEXT)
-	$(LINK) $(run_emitter_OBJECTS) $(run_emitter_LDADD) $(LIBS)
-run-loader$(EXEEXT): $(run_loader_OBJECTS) $(run_loader_DEPENDENCIES) 
-	@rm -f run-loader$(EXEEXT)
-	$(LINK) $(run_loader_OBJECTS) $(run_loader_LDADD) $(LIBS)
-run-parser$(EXEEXT): $(run_parser_OBJECTS) $(run_parser_DEPENDENCIES) 
-	@rm -f run-parser$(EXEEXT)
-	$(LINK) $(run_parser_OBJECTS) $(run_parser_LDADD) $(LIBS)
-run-scanner$(EXEEXT): $(run_scanner_OBJECTS) $(run_scanner_DEPENDENCIES) 
-	@rm -f run-scanner$(EXEEXT)
-	$(LINK) $(run_scanner_OBJECTS) $(run_scanner_LDADD) $(LIBS)
-test-reader$(EXEEXT): $(test_reader_OBJECTS) $(test_reader_DEPENDENCIES) 
-	@rm -f test-reader$(EXEEXT)
-	$(LINK) $(test_reader_OBJECTS) $(test_reader_LDADD) $(LIBS)
-test-version$(EXEEXT): $(test_version_OBJECTS) $(test_version_DEPENDENCIES) 
-	@rm -f test-version$(EXEEXT)
-	$(LINK) $(test_version_OBJECTS) $(test_version_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/example-deconstructor-alt.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/example-deconstructor.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/example-reformatter-alt.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/example-reformatter.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run-dumper.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run-emitter.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run-loader.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run-parser.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run-scanner.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-reader.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-version.Po@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	tags=; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
-	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	tags=; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-check-TESTS: $(TESTS)
-	@failed=0; all=0; xfail=0; xpass=0; skip=0; \
-	srcdir=$(srcdir); export srcdir; \
-	list=' $(TESTS) '; \
-	if test -n "$$list"; then \
-	  for tst in $$list; do \
-	    if test -f ./$$tst; then dir=./; \
-	    elif test -f $$tst; then dir=; \
-	    else dir="$(srcdir)/"; fi; \
-	    if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
-	      all=`expr $$all + 1`; \
-	      case " $(XFAIL_TESTS) " in \
-	      *[\ \	]$$tst[\ \	]*) \
-		xpass=`expr $$xpass + 1`; \
-		failed=`expr $$failed + 1`; \
-		echo "XPASS: $$tst"; \
-	      ;; \
-	      *) \
-		echo "PASS: $$tst"; \
-	      ;; \
-	      esac; \
-	    elif test $$? -ne 77; then \
-	      all=`expr $$all + 1`; \
-	      case " $(XFAIL_TESTS) " in \
-	      *[\ \	]$$tst[\ \	]*) \
-		xfail=`expr $$xfail + 1`; \
-		echo "XFAIL: $$tst"; \
-	      ;; \
-	      *) \
-		failed=`expr $$failed + 1`; \
-		echo "FAIL: $$tst"; \
-	      ;; \
-	      esac; \
-	    else \
-	      skip=`expr $$skip + 1`; \
-	      echo "SKIP: $$tst"; \
-	    fi; \
-	  done; \
-	  if test "$$all" -eq 1; then \
-	    tests="test"; \
-	    All=""; \
-	  else \
-	    tests="tests"; \
-	    All="All "; \
-	  fi; \
-	  if test "$$failed" -eq 0; then \
-	    if test "$$xfail" -eq 0; then \
-	      banner="$$All$$all $$tests passed"; \
-	    else \
-	      if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
-	      banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
-	    fi; \
-	  else \
-	    if test "$$xpass" -eq 0; then \
-	      banner="$$failed of $$all $$tests failed"; \
-	    else \
-	      if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
-	      banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
-	    fi; \
-	  fi; \
-	  dashes="$$banner"; \
-	  skipped=""; \
-	  if test "$$skip" -ne 0; then \
-	    if test "$$skip" -eq 1; then \
-	      skipped="($$skip test was not run)"; \
-	    else \
-	      skipped="($$skip tests were not run)"; \
-	    fi; \
-	    test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
-	      dashes="$$skipped"; \
-	  fi; \
-	  report=""; \
-	  if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
-	    report="Please report to $(PACKAGE_BUGREPORT)"; \
-	    test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
-	      dashes="$$report"; \
-	  fi; \
-	  dashes=`echo "$$dashes" | sed s/./=/g`; \
-	  echo "$$dashes"; \
-	  echo "$$banner"; \
-	  test -z "$$skipped" || echo "$$skipped"; \
-	  test -z "$$report" || echo "$$report"; \
-	  echo "$$dashes"; \
-	  test "$$failed" -eq 0; \
-	else :; fi
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
-	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-	$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
-	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
-check: check-am
-all-am: Makefile $(PROGRAMS)
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
-	clean-noinstPROGRAMS mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-info: install-info-am
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-ps: install-ps-am
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
-	clean-checkPROGRAMS clean-generic clean-libtool \
-	clean-noinstPROGRAMS ctags distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/yaml-0.1.3/tests/example-deconstructor-alt.c b/yaml-0.1.3/tests/example-deconstructor-alt.c
deleted file mode 100644
index 7da194a..0000000
--- a/yaml-0.1.3/tests/example-deconstructor-alt.c
+++ /dev/null
@@ -1,800 +0,0 @@
-
-#include <yaml.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-
-int
-main(int argc, char *argv[])
-{
-    int help = 0;
-    int canonical = 0;
-    int unicode = 0;
-    int k;
-    int done = 0;
-
-    yaml_parser_t parser;
-    yaml_emitter_t emitter;
-    yaml_event_t input_event;
-    yaml_document_t output_document;
-
-    int root;
-
-    /* Clear the objects. */
-
-    memset(&parser, 0, sizeof(parser));
-    memset(&emitter, 0, sizeof(emitter));
-    memset(&input_event, 0, sizeof(input_event));
-    memset(&output_document, 0, sizeof(output_document));
-
-    /* Analyze command line options. */
-
-    for (k = 1; k < argc; k ++)
-    {
-        if (strcmp(argv[k], "-h") == 0
-                || strcmp(argv[k], "--help") == 0) {
-            help = 1;
-        }
-
-        else if (strcmp(argv[k], "-c") == 0
-                || strcmp(argv[k], "--canonical") == 0) {
-            canonical = 1;
-        }
-
-        else if (strcmp(argv[k], "-u") == 0
-                || strcmp(argv[k], "--unicode") == 0) {
-            unicode = 1;
-        }
-
-        else {
-            fprintf(stderr, "Unrecognized option: %s\n"
-                    "Try `%s --help` for more information.\n",
-                    argv[k], argv[0]);
-            return 1;
-        }
-    }
-
-    /* Display the help string. */
-
-    if (help)
-    {
-        printf("%s <input\n"
-                "or\n%s -h | --help\nDeconstruct a YAML stream\n\nOptions:\n"
-                "-h, --help\t\tdisplay this help and exit\n"
-                "-c, --canonical\t\toutput in the canonical YAML format\n"
-                "-u, --unicode\t\toutput unescaped non-ASCII characters\n",
-                argv[0], argv[0]);
-        return 0;
-    }
-
-    /* Initialize the parser and emitter objects. */
-
-    if (!yaml_parser_initialize(&parser)) {
-        fprintf(stderr, "Could not initialize the parser object\n");
-        return 1;
-    }
-
-    if (!yaml_emitter_initialize(&emitter)) {
-        yaml_parser_delete(&parser);
-        fprintf(stderr, "Could not inialize the emitter object\n");
-        return 1;
-    }
-
-    /* Set the parser parameters. */
-
-    yaml_parser_set_input_file(&parser, stdin);
-
-    /* Set the emitter parameters. */
-
-    yaml_emitter_set_output_file(&emitter, stdout);
-
-    yaml_emitter_set_canonical(&emitter, canonical);
-    yaml_emitter_set_unicode(&emitter, unicode);
-
-    /* Create and emit the STREAM-START event. */
-
-    if (!yaml_emitter_open(&emitter))
-        goto emitter_error;
-
-    /* Create a output_document object. */
-
-    if (!yaml_document_initialize(&output_document, NULL, NULL, NULL, 0, 0))
-        goto document_error;
-
-    /* Create the root sequence. */
-
-    root = yaml_document_add_sequence(&output_document, NULL,
-            YAML_BLOCK_SEQUENCE_STYLE);
-    if (!root) goto document_error;
-
-    /* Loop through the input events. */
-
-    while (!done)
-    {
-        int properties, key, value, map, seq;
-
-        /* Get the next event. */
-
-        if (!yaml_parser_parse(&parser, &input_event))
-            goto parser_error;
-
-        /* Check if this is the stream end. */
-
-        if (input_event.type == YAML_STREAM_END_EVENT) {
-            done = 1;
-        }
-
-        /* Create a mapping node and attach it to the root sequence. */
-
-        properties = yaml_document_add_mapping(&output_document, NULL,
-                YAML_BLOCK_MAPPING_STYLE);
-        if (!properties) goto document_error;
-        if (!yaml_document_append_sequence_item(&output_document,
-                    root, properties)) goto document_error;
-
-        /* Analyze the event. */
-
-        switch (input_event.type)
-        {
-            case YAML_STREAM_START_EVENT:
-
-                /* Add 'type': 'STREAM-START'. */
-
-                key = yaml_document_add_scalar(&output_document, NULL,
-                    "type", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!key) goto document_error;
-                value = yaml_document_add_scalar(&output_document, NULL,
-                    "STREAM-START", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!value) goto document_error;
-                if (!yaml_document_append_mapping_pair(&output_document,
-                            properties, key, value)) goto document_error;
-
-                /* Add 'encoding': <encoding>. */
-
-                if (input_event.data.stream_start.encoding)
-                {
-                    yaml_encoding_t encoding
-                        = input_event.data.stream_start.encoding;
-
-                    key = yaml_document_add_scalar(&output_document, NULL,
-                        "encoding", -1, YAML_PLAIN_SCALAR_STYLE);
-                    if (!key) goto document_error;
-                    value = yaml_document_add_scalar(&output_document, NULL,
-                            (encoding == YAML_UTF8_ENCODING ? "utf-8" :
-                             encoding == YAML_UTF16LE_ENCODING ? "utf-16-le" :
-                             encoding == YAML_UTF16BE_ENCODING ? "utf-16-be" :
-                             "unknown"), -1, YAML_PLAIN_SCALAR_STYLE);
-                    if (!value) goto document_error;
-                    if (!yaml_document_append_mapping_pair(&output_document,
-                                properties, key, value)) goto document_error;
-                }
-                    
-                break;
-
-            case YAML_STREAM_END_EVENT:
-
-                /* Add 'type': 'STREAM-END'. */
-
-                key = yaml_document_add_scalar(&output_document, NULL,
-                    "type", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!key) goto document_error;
-                value = yaml_document_add_scalar(&output_document, NULL,
-                    "STREAM-END", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!value) goto document_error;
-                if (!yaml_document_append_mapping_pair(&output_document,
-                            properties, key, value)) goto document_error;
-
-                break;
-
-            case YAML_DOCUMENT_START_EVENT:
-
-                /* Add 'type': 'DOCUMENT-START'. */
-
-                key = yaml_document_add_scalar(&output_document, NULL,
-                    "type", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!key) goto document_error;
-                value = yaml_document_add_scalar(&output_document, NULL,
-                    "DOCUMENT-START", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!value) goto document_error;
-                if (!yaml_document_append_mapping_pair(&output_document,
-                            properties, key, value)) goto document_error;
-
-                /* Display the output_document version numbers. */
-
-                if (input_event.data.document_start.version_directive)
-                {
-                    yaml_version_directive_t *version
-                        = input_event.data.document_start.version_directive;
-                    char number[64];
-
-                    /* Add 'version': {}. */
-                    
-                    key = yaml_document_add_scalar(&output_document, NULL,
-                        "version", -1, YAML_PLAIN_SCALAR_STYLE);
-                    if (!key) goto document_error;
-                    map = yaml_document_add_mapping(&output_document, NULL,
-                            YAML_FLOW_MAPPING_STYLE);
-                    if (!map) goto document_error;
-                    if (!yaml_document_append_mapping_pair(&output_document,
-                                properties, key, map)) goto document_error;
-
-                    /* Add 'major': <number>. */
-
-                    key = yaml_document_add_scalar(&output_document, NULL,
-                        "major", -1, YAML_PLAIN_SCALAR_STYLE);
-                    if (!key) goto document_error;
-                    sprintf(number, "%d", version->major);
-                    value = yaml_document_add_scalar(&output_document, YAML_INT_TAG,
-                        number, -1, YAML_PLAIN_SCALAR_STYLE);
-                    if (!value) goto document_error;
-                    if (!yaml_document_append_mapping_pair(&output_document,
-                                map, key, value)) goto document_error;
-
-                    /* Add 'minor': <number>. */
-
-                    key = yaml_document_add_scalar(&output_document, NULL,
-                        "minor", -1, YAML_PLAIN_SCALAR_STYLE);
-                    if (!key) goto document_error;
-                    sprintf(number, "%d", version->minor);
-                    value = yaml_document_add_scalar(&output_document, YAML_INT_TAG,
-                        number, -1, YAML_PLAIN_SCALAR_STYLE);
-                    if (!value) goto document_error;
-                    if (!yaml_document_append_mapping_pair(&output_document,
-                                map, key, value)) goto document_error;
-                }
-
-                /* Display the output_document tag directives. */
-
-                if (input_event.data.document_start.tag_directives.start
-                        != input_event.data.document_start.tag_directives.end)
-                {
-                    yaml_tag_directive_t *tag;
-
-                    /* Add 'tags': []. */
-                    
-                    key = yaml_document_add_scalar(&output_document, NULL,
-                        "tags", -1, YAML_PLAIN_SCALAR_STYLE);
-                    if (!key) goto document_error;
-                    seq = yaml_document_add_sequence(&output_document, NULL,
-                            YAML_BLOCK_SEQUENCE_STYLE);
-                    if (!seq) goto document_error;
-                    if (!yaml_document_append_mapping_pair(&output_document,
-                                properties, key, seq)) goto document_error;
-
-                    for (tag = input_event.data.document_start.tag_directives.start;
-                            tag != input_event.data.document_start.tag_directives.end;
-                            tag ++)
-                    {
-                        /* Add {}. */
-
-                        map = yaml_document_add_mapping(&output_document, NULL,
-                                YAML_FLOW_MAPPING_STYLE);
-                        if (!map) goto document_error;
-                        if (!yaml_document_append_sequence_item(&output_document,
-                                    seq, map)) goto document_error;
-
-                        /* Add 'handle': <handle>. */
-
-                        key = yaml_document_add_scalar(&output_document, NULL,
-                            "handle", -1, YAML_PLAIN_SCALAR_STYLE);
-                        if (!key) goto document_error;
-                        value = yaml_document_add_scalar(&output_document, NULL,
-                            tag->handle, -1, YAML_DOUBLE_QUOTED_SCALAR_STYLE);
-                        if (!value) goto document_error;
-                        if (!yaml_document_append_mapping_pair(&output_document,
-                                    map, key, value)) goto document_error;
-
-                        /* Add 'prefix': <prefix>. */
-
-                        key = yaml_document_add_scalar(&output_document, NULL,
-                            "prefix", -1, YAML_PLAIN_SCALAR_STYLE);
-                        if (!key) goto document_error;
-                        value = yaml_document_add_scalar(&output_document, NULL,
-                            tag->prefix, -1, YAML_DOUBLE_QUOTED_SCALAR_STYLE);
-                        if (!value) goto document_error;
-                        if (!yaml_document_append_mapping_pair(&output_document,
-                                    map, key, value)) goto document_error;
-                    }
-                }
-
-                /* Add 'implicit': <flag>. */
-
-                key = yaml_document_add_scalar(&output_document, NULL,
-                    "implicit", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!key) goto document_error;
-                value = yaml_document_add_scalar(&output_document, YAML_BOOL_TAG,
-                        (input_event.data.document_start.implicit ?
-                         "true" : "false"), -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!value) goto document_error;
-                if (!yaml_document_append_mapping_pair(&output_document,
-                            properties, key, value)) goto document_error;
-
-                break;
-
-            case YAML_DOCUMENT_END_EVENT:
-
-                /* Add 'type': 'DOCUMENT-END'. */
-
-                key = yaml_document_add_scalar(&output_document, NULL,
-                    "type", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!key) goto document_error;
-                value = yaml_document_add_scalar(&output_document, NULL,
-                    "DOCUMENT-END", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!value) goto document_error;
-                if (!yaml_document_append_mapping_pair(&output_document,
-                            properties, key, value)) goto document_error;
-
-                /* Add 'implicit': <flag>. */
-
-                key = yaml_document_add_scalar(&output_document, NULL,
-                    "implicit", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!key) goto document_error;
-                value = yaml_document_add_scalar(&output_document, YAML_BOOL_TAG,
-                        (input_event.data.document_end.implicit ?
-                         "true" : "false"), -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!value) goto document_error;
-                if (!yaml_document_append_mapping_pair(&output_document,
-                            properties, key, value)) goto document_error;
-
-                break;
-
-            case YAML_ALIAS_EVENT:
-
-                /* Add 'type': 'ALIAS'. */
-
-                key = yaml_document_add_scalar(&output_document, NULL,
-                    "type", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!key) goto document_error;
-                value = yaml_document_add_scalar(&output_document, NULL,
-                    "ALIAS", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!value) goto document_error;
-                if (!yaml_document_append_mapping_pair(&output_document,
-                            properties, key, value)) goto document_error;
-
-                /* Add 'anchor': <anchor>. */
-
-                key = yaml_document_add_scalar(&output_document, NULL,
-                    "anchor", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!key) goto document_error;
-                value = yaml_document_add_scalar(&output_document, NULL,
-                        input_event.data.alias.anchor, -1,
-                        YAML_DOUBLE_QUOTED_SCALAR_STYLE);
-                if (!value) goto document_error;
-                if (!yaml_document_append_mapping_pair(&output_document,
-                            properties, key, value)) goto document_error;
-
-                break;
-
-            case YAML_SCALAR_EVENT:
-
-                /* Add 'type': 'SCALAR'. */
-
-                key = yaml_document_add_scalar(&output_document, NULL,
-                    "type", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!key) goto document_error;
-                value = yaml_document_add_scalar(&output_document, NULL,
-                    "SCALAR", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!value) goto document_error;
-                if (!yaml_document_append_mapping_pair(&output_document,
-                            properties, key, value)) goto document_error;
-
-                /* Add 'anchor': <anchor>. */
-
-                if (input_event.data.scalar.anchor)
-                {
-                    key = yaml_document_add_scalar(&output_document, NULL,
-                        "anchor", -1, YAML_PLAIN_SCALAR_STYLE);
-                    if (!key) goto document_error;
-                    value = yaml_document_add_scalar(&output_document, NULL,
-                            input_event.data.scalar.anchor, -1,
-                            YAML_DOUBLE_QUOTED_SCALAR_STYLE);
-                    if (!value) goto document_error;
-                    if (!yaml_document_append_mapping_pair(&output_document,
-                                properties, key, value)) goto document_error;
-                }
-
-                /* Add 'tag': <tag>. */
-
-                if (input_event.data.scalar.tag)
-                {
-                    key = yaml_document_add_scalar(&output_document, NULL,
-                        "tag", -1, YAML_PLAIN_SCALAR_STYLE);
-                    if (!key) goto document_error;
-                    value = yaml_document_add_scalar(&output_document, NULL,
-                            input_event.data.scalar.tag, -1,
-                            YAML_DOUBLE_QUOTED_SCALAR_STYLE);
-                    if (!value) goto document_error;
-                    if (!yaml_document_append_mapping_pair(&output_document,
-                                properties, key, value)) goto document_error;
-                }
-
-                /* Add 'value': <value>. */
-
-                key = yaml_document_add_scalar(&output_document, NULL,
-                    "value", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!key) goto document_error;
-                value = yaml_document_add_scalar(&output_document, NULL,
-                        input_event.data.scalar.value,
-                        input_event.data.scalar.length,
-                        YAML_DOUBLE_QUOTED_SCALAR_STYLE);
-                if (!value) goto document_error;
-                if (!yaml_document_append_mapping_pair(&output_document,
-                            properties, key, value)) goto document_error;
-
-                /* Display if the scalar tag is implicit. */
-
-                /* Add 'implicit': {} */
-
-                key = yaml_document_add_scalar(&output_document, NULL,
-                    "version", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!key) goto document_error;
-                map = yaml_document_add_mapping(&output_document, NULL,
-                        YAML_FLOW_MAPPING_STYLE);
-                if (!map) goto document_error;
-                if (!yaml_document_append_mapping_pair(&output_document,
-                            properties, key, map)) goto document_error;
-
-                /* Add 'plain': <flag>. */
-
-                key = yaml_document_add_scalar(&output_document, NULL,
-                    "plain", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!key) goto document_error;
-                value = yaml_document_add_scalar(&output_document, YAML_BOOL_TAG,
-                        (input_event.data.scalar.plain_implicit ?
-                         "true" : "false"), -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!value) goto document_error;
-                if (!yaml_document_append_mapping_pair(&output_document,
-                            map, key, value)) goto document_error;
-
-                /* Add 'quoted': <flag>. */
-
-                key = yaml_document_add_scalar(&output_document, NULL,
-                    "quoted", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!key) goto document_error;
-                value = yaml_document_add_scalar(&output_document, YAML_BOOL_TAG,
-                        (input_event.data.scalar.quoted_implicit ?
-                         "true" : "false"), -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!value) goto document_error;
-                if (!yaml_document_append_mapping_pair(&output_document,
-                            map, key, value)) goto document_error;
-
-                /* Display the style information. */
-
-                if (input_event.data.scalar.style)
-                {
-                    yaml_scalar_style_t style = input_event.data.scalar.style;
-
-                    /* Add 'style': <style>. */
-
-                    key = yaml_document_add_scalar(&output_document, NULL,
-                        "style", -1, YAML_PLAIN_SCALAR_STYLE);
-                    if (!key) goto document_error;
-                    value = yaml_document_add_scalar(&output_document, NULL,
-                            (style == YAML_PLAIN_SCALAR_STYLE ? "plain" :
-                             style == YAML_SINGLE_QUOTED_SCALAR_STYLE ?
-                                    "single-quoted" :
-                             style == YAML_DOUBLE_QUOTED_SCALAR_STYLE ?
-                                    "double-quoted" :
-                             style == YAML_LITERAL_SCALAR_STYLE ? "literal" :
-                             style == YAML_FOLDED_SCALAR_STYLE ? "folded" :
-                             "unknown"), -1, YAML_PLAIN_SCALAR_STYLE);
-                    if (!value) goto document_error;
-                    if (!yaml_document_append_mapping_pair(&output_document,
-                                properties, key, value)) goto document_error;
-                }
-
-                break;
-
-            case YAML_SEQUENCE_START_EVENT:
-
-                /* Add 'type': 'SEQUENCE-START'. */
-
-                key = yaml_document_add_scalar(&output_document, NULL,
-                    "type", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!key) goto document_error;
-                value = yaml_document_add_scalar(&output_document, NULL,
-                    "SEQUENCE-START", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!value) goto document_error;
-                if (!yaml_document_append_mapping_pair(&output_document,
-                            properties, key, value)) goto document_error;
-
-                /* Add 'anchor': <anchor>. */
-
-                if (input_event.data.sequence_start.anchor)
-                {
-                    key = yaml_document_add_scalar(&output_document, NULL,
-                        "anchor", -1, YAML_PLAIN_SCALAR_STYLE);
-                    if (!key) goto document_error;
-                    value = yaml_document_add_scalar(&output_document, NULL,
-                            input_event.data.sequence_start.anchor, -1,
-                            YAML_DOUBLE_QUOTED_SCALAR_STYLE);
-                    if (!value) goto document_error;
-                    if (!yaml_document_append_mapping_pair(&output_document,
-                                properties, key, value)) goto document_error;
-                }
-
-                /* Add 'tag': <tag>. */
-
-                if (input_event.data.sequence_start.tag)
-                {
-                    key = yaml_document_add_scalar(&output_document, NULL,
-                        "tag", -1, YAML_PLAIN_SCALAR_STYLE);
-                    if (!key) goto document_error;
-                    value = yaml_document_add_scalar(&output_document, NULL,
-                            input_event.data.sequence_start.tag, -1,
-                            YAML_DOUBLE_QUOTED_SCALAR_STYLE);
-                    if (!value) goto document_error;
-                    if (!yaml_document_append_mapping_pair(&output_document,
-                                properties, key, value)) goto document_error;
-                }
-
-                /* Add 'implicit': <flag>. */
-
-                key = yaml_document_add_scalar(&output_document, NULL,
-                    "implicit", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!key) goto document_error;
-                value = yaml_document_add_scalar(&output_document, YAML_BOOL_TAG,
-                        (input_event.data.sequence_start.implicit ?
-                         "true" : "false"), -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!value) goto document_error;
-                if (!yaml_document_append_mapping_pair(&output_document,
-                            properties, key, value)) goto document_error;
-
-                /* Display the style information. */
-
-                if (input_event.data.sequence_start.style)
-                {
-                    yaml_sequence_style_t style
-                        = input_event.data.sequence_start.style;
-
-                    /* Add 'style': <style>. */
-
-                    key = yaml_document_add_scalar(&output_document, NULL,
-                        "style", -1, YAML_PLAIN_SCALAR_STYLE);
-                    if (!key) goto document_error;
-                    value = yaml_document_add_scalar(&output_document, NULL,
-                            (style == YAML_BLOCK_SEQUENCE_STYLE ? "block" :
-                             style == YAML_FLOW_SEQUENCE_STYLE ? "flow" :
-                             "unknown"), -1, YAML_PLAIN_SCALAR_STYLE);
-                    if (!value) goto document_error;
-                    if (!yaml_document_append_mapping_pair(&output_document,
-                                properties, key, value)) goto document_error;
-                }
-
-                break;
-
-            case YAML_SEQUENCE_END_EVENT:
-
-                /* Add 'type': 'SEQUENCE-END'. */
-
-                key = yaml_document_add_scalar(&output_document, NULL,
-                    "type", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!key) goto document_error;
-                value = yaml_document_add_scalar(&output_document, NULL,
-                    "SEQUENCE-END", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!value) goto document_error;
-                if (!yaml_document_append_mapping_pair(&output_document,
-                            properties, key, value)) goto document_error;
-
-                break;
-
-            case YAML_MAPPING_START_EVENT:
-
-                /* Add 'type': 'MAPPING-START'. */
-
-                key = yaml_document_add_scalar(&output_document, NULL,
-                    "type", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!key) goto document_error;
-                value = yaml_document_add_scalar(&output_document, NULL,
-                    "MAPPING-START", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!value) goto document_error;
-                if (!yaml_document_append_mapping_pair(&output_document,
-                            properties, key, value)) goto document_error;
-
-                /* Add 'anchor': <anchor>. */
-
-                if (input_event.data.mapping_start.anchor)
-                {
-                    key = yaml_document_add_scalar(&output_document, NULL,
-                        "anchor", -1, YAML_PLAIN_SCALAR_STYLE);
-                    if (!key) goto document_error;
-                    value = yaml_document_add_scalar(&output_document, NULL,
-                            input_event.data.mapping_start.anchor, -1,
-                            YAML_DOUBLE_QUOTED_SCALAR_STYLE);
-                    if (!value) goto document_error;
-                    if (!yaml_document_append_mapping_pair(&output_document,
-                                properties, key, value)) goto document_error;
-                }
-
-                /* Add 'tag': <tag>. */
-
-                if (input_event.data.mapping_start.tag)
-                {
-                    key = yaml_document_add_scalar(&output_document, NULL,
-                        "tag", -1, YAML_PLAIN_SCALAR_STYLE);
-                    if (!key) goto document_error;
-                    value = yaml_document_add_scalar(&output_document, NULL,
-                            input_event.data.mapping_start.tag, -1,
-                            YAML_DOUBLE_QUOTED_SCALAR_STYLE);
-                    if (!value) goto document_error;
-                    if (!yaml_document_append_mapping_pair(&output_document,
-                                properties, key, value)) goto document_error;
-                }
-
-                /* Add 'implicit': <flag>. */
-
-                key = yaml_document_add_scalar(&output_document, NULL,
-                    "implicit", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!key) goto document_error;
-                value = yaml_document_add_scalar(&output_document, YAML_BOOL_TAG,
-                        (input_event.data.mapping_start.implicit ?
-                         "true" : "false"), -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!value) goto document_error;
-                if (!yaml_document_append_mapping_pair(&output_document,
-                            properties, key, value)) goto document_error;
-
-                /* Display the style information. */
-
-                if (input_event.data.sequence_start.style)
-                {
-                    yaml_sequence_style_t style
-                        = input_event.data.mapping_start.style;
-
-                    /* Add 'style': <style>. */
-
-                    key = yaml_document_add_scalar(&output_document, NULL,
-                        "style", -1, YAML_PLAIN_SCALAR_STYLE);
-                    if (!key) goto document_error;
-                    value = yaml_document_add_scalar(&output_document, NULL,
-                            (style == YAML_BLOCK_MAPPING_STYLE ? "block" :
-                             style == YAML_FLOW_MAPPING_STYLE ? "flow" :
-                             "unknown"), -1, YAML_PLAIN_SCALAR_STYLE);
-                    if (!value) goto document_error;
-                    if (!yaml_document_append_mapping_pair(&output_document,
-                                properties, key, value)) goto document_error;
-                }
-
-                break;
-
-            case YAML_MAPPING_END_EVENT:
-
-                /* Add 'type': 'MAPPING-END'. */
-
-                key = yaml_document_add_scalar(&output_document, NULL,
-                    "type", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!key) goto document_error;
-                value = yaml_document_add_scalar(&output_document, NULL,
-                    "MAPPING-END", -1, YAML_PLAIN_SCALAR_STYLE);
-                if (!value) goto document_error;
-                if (!yaml_document_append_mapping_pair(&output_document,
-                            properties, key, value)) goto document_error;
-
-                break;
-
-            default:
-                /* It couldn't really happen. */
-                break;
-        }
-
-        /* Delete the event object. */
-
-        yaml_event_delete(&input_event);
-    }
-
-    if (!yaml_emitter_dump(&emitter, &output_document))
-        goto emitter_error;
-    if (!yaml_emitter_close(&emitter))
-        goto emitter_error;
-
-    yaml_parser_delete(&parser);
-    yaml_emitter_delete(&emitter);
-
-    return 0;
-
-parser_error:
-
-    /* Display a parser error message. */
-
-    switch (parser.error)
-    {
-        case YAML_MEMORY_ERROR:
-            fprintf(stderr, "Memory error: Not enough memory for parsing\n");
-            break;
-
-        case YAML_READER_ERROR:
-            if (parser.problem_value != -1) {
-                fprintf(stderr, "Reader error: %s: #%X at %d\n", parser.problem,
-                        parser.problem_value, parser.problem_offset);
-            }
-            else {
-                fprintf(stderr, "Reader error: %s at %d\n", parser.problem,
-                        parser.problem_offset);
-            }
-            break;
-
-        case YAML_SCANNER_ERROR:
-            if (parser.context) {
-                fprintf(stderr, "Scanner error: %s at line %d, column %d\n"
-                        "%s at line %d, column %d\n", parser.context,
-                        parser.context_mark.line+1, parser.context_mark.column+1,
-                        parser.problem, parser.problem_mark.line+1,
-                        parser.problem_mark.column+1);
-            }
-            else {
-                fprintf(stderr, "Scanner error: %s at line %d, column %d\n",
-                        parser.problem, parser.problem_mark.line+1,
-                        parser.problem_mark.column+1);
-            }
-            break;
-
-        case YAML_PARSER_ERROR:
-            if (parser.context) {
-                fprintf(stderr, "Parser error: %s at line %d, column %d\n"
-                        "%s at line %d, column %d\n", parser.context,
-                        parser.context_mark.line+1, parser.context_mark.column+1,
-                        parser.problem, parser.problem_mark.line+1,
-                        parser.problem_mark.column+1);
-            }
-            else {
-                fprintf(stderr, "Parser error: %s at line %d, column %d\n",
-                        parser.problem, parser.problem_mark.line+1,
-                        parser.problem_mark.column+1);
-            }
-            break;
-
-        default:
-            /* Couldn't happen. */
-            fprintf(stderr, "Internal error\n");
-            break;
-    }
-
-    yaml_event_delete(&input_event);
-    yaml_document_delete(&output_document);
-    yaml_parser_delete(&parser);
-    yaml_emitter_delete(&emitter);
-
-    return 1;
-
-emitter_error:
-
-    /* Display an emitter error message. */
-
-    switch (emitter.error)
-    {
-        case YAML_MEMORY_ERROR:
-            fprintf(stderr, "Memory error: Not enough memory for emitting\n");
-            break;
-
-        case YAML_WRITER_ERROR:
-            fprintf(stderr, "Writer error: %s\n", emitter.problem);
-            break;
-
-        case YAML_EMITTER_ERROR:
-            fprintf(stderr, "Emitter error: %s\n", emitter.problem);
-            break;
-
-        default:
-            /* Couldn't happen. */
-            fprintf(stderr, "Internal error\n");
-            break;
-    }
-
-    yaml_event_delete(&input_event);
-    yaml_document_delete(&output_document);
-    yaml_parser_delete(&parser);
-    yaml_emitter_delete(&emitter);
-
-    return 1;
-
-document_error:
-
-    fprintf(stderr, "Memory error: Not enough memory for creating a document\n");
-
-    yaml_event_delete(&input_event);
-    yaml_document_delete(&output_document);
-    yaml_parser_delete(&parser);
-    yaml_emitter_delete(&emitter);
-
-    return 1;
-}
-
diff --git a/yaml-0.1.3/tests/example-deconstructor.c b/yaml-0.1.3/tests/example-deconstructor.c
deleted file mode 100644
index fec7d59..0000000
--- a/yaml-0.1.3/tests/example-deconstructor.c
+++ /dev/null
@@ -1,1130 +0,0 @@
-
-#include <yaml.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-
-int
-main(int argc, char *argv[])
-{
-    int help = 0;
-    int canonical = 0;
-    int unicode = 0;
-    int k;
-    int done = 0;
-
-    yaml_parser_t parser;
-    yaml_emitter_t emitter;
-    yaml_event_t input_event;
-    yaml_event_t output_event;
-
-    /* Clear the objects. */
-
-    memset(&parser, 0, sizeof(parser));
-    memset(&emitter, 0, sizeof(emitter));
-    memset(&input_event, 0, sizeof(input_event));
-    memset(&output_event, 0, sizeof(output_event));
-
-    /* Analyze command line options. */
-
-    for (k = 1; k < argc; k ++)
-    {
-        if (strcmp(argv[k], "-h") == 0
-                || strcmp(argv[k], "--help") == 0) {
-            help = 1;
-        }
-
-        else if (strcmp(argv[k], "-c") == 0
-                || strcmp(argv[k], "--canonical") == 0) {
-            canonical = 1;
-        }
-
-        else if (strcmp(argv[k], "-u") == 0
-                || strcmp(argv[k], "--unicode") == 0) {
-            unicode = 1;
-        }
-
-        else {
-            fprintf(stderr, "Unrecognized option: %s\n"
-                    "Try `%s --help` for more information.\n",
-                    argv[k], argv[0]);
-            return 1;
-        }
-    }
-
-    /* Display the help string. */
-
-    if (help)
-    {
-        printf("%s <input\n"
-                "or\n%s -h | --help\nDeconstruct a YAML stream\n\nOptions:\n"
-                "-h, --help\t\tdisplay this help and exit\n"
-                "-c, --canonical\t\toutput in the canonical YAML format\n"
-                "-u, --unicode\t\toutput unescaped non-ASCII characters\n",
-                argv[0], argv[0]);
-        return 0;
-    }
-
-    /* Initialize the parser and emitter objects. */
-
-    if (!yaml_parser_initialize(&parser)) {
-        fprintf(stderr, "Could not initialize the parser object\n");
-        return 1;
-    }
-
-    if (!yaml_emitter_initialize(&emitter)) {
-        yaml_parser_delete(&parser);
-        fprintf(stderr, "Could not inialize the emitter object\n");
-        return 1;
-    }
-
-    /* Set the parser parameters. */
-
-    yaml_parser_set_input_file(&parser, stdin);
-
-    /* Set the emitter parameters. */
-
-    yaml_emitter_set_output_file(&emitter, stdout);
-
-    yaml_emitter_set_canonical(&emitter, canonical);
-    yaml_emitter_set_unicode(&emitter, unicode);
-
-    /* Create and emit the STREAM-START event. */
-
-    if (!yaml_stream_start_event_initialize(&output_event, YAML_UTF8_ENCODING))
-        goto event_error;
-    if (!yaml_emitter_emit(&emitter, &output_event))
-        goto emitter_error;
-
-    /* Create and emit the DOCUMENT-START event. */
-
-    if (!yaml_document_start_event_initialize(&output_event,
-                NULL, NULL, NULL, 0))
-        goto event_error;
-    if (!yaml_emitter_emit(&emitter, &output_event))
-        goto emitter_error;
-
-    /* Create and emit the SEQUENCE-START event. */
-
-    if (!yaml_sequence_start_event_initialize(&output_event,
-                NULL, "tag:yaml.org,2002:seq", 1,
-                YAML_BLOCK_SEQUENCE_STYLE))
-        goto event_error;
-    if (!yaml_emitter_emit(&emitter, &output_event))
-        goto emitter_error;
-
-    /* Loop through the input events. */
-
-    while (!done)
-    {
-        /* Get the next event. */
-
-        if (!yaml_parser_parse(&parser, &input_event))
-            goto parser_error;
-
-        /* Check if this is the stream end. */
-
-        if (input_event.type == YAML_STREAM_END_EVENT) {
-            done = 1;
-        }
-
-        /* Create and emit a MAPPING-START event. */
-
-        if (!yaml_mapping_start_event_initialize(&output_event,
-                    NULL, "tag:yaml.org,2002:map", 1,
-                    YAML_BLOCK_MAPPING_STYLE))
-            goto event_error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-            goto emitter_error;
-
-        /* Analyze the event. */
-
-        switch (input_event.type)
-        {
-            case YAML_STREAM_START_EVENT:
-
-                /* Write 'type'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "type", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Write 'STREAM-START'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "STREAM-START", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Display encoding information. */
-
-                if (input_event.data.stream_start.encoding)
-                {
-                    yaml_encoding_t encoding
-                        = input_event.data.stream_start.encoding;
-
-                    /* Write 'encoding'. */
-
-                    if (!yaml_scalar_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:str", "encoding", -1,
-                                1, 1, YAML_PLAIN_SCALAR_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-
-                    /* Write the stream encoding. */
-
-                    if (!yaml_scalar_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:str",
-                                (encoding == YAML_UTF8_ENCODING ? "utf-8" :
-                                 encoding == YAML_UTF16LE_ENCODING ? "utf-16-le" :
-                                 encoding == YAML_UTF16BE_ENCODING ? "utf-16-be" :
-                                 "unknown"), -1,
-                                1, 1, YAML_PLAIN_SCALAR_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-                }
-
-                break;
-
-            case YAML_STREAM_END_EVENT:
-
-                /* Write 'type'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "type", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Write 'STREAM-END'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "STREAM-END", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                break;
-
-            case YAML_DOCUMENT_START_EVENT:
-
-                /* Write 'type'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "type", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Write 'DOCUMENT-START'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "DOCUMENT-START", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Display the document version numbers. */
-
-                if (input_event.data.document_start.version_directive)
-                {
-                    yaml_version_directive_t *version
-                        = input_event.data.document_start.version_directive;
-                    char number[64];
-
-                    /* Write 'version'. */
-                    
-                    if (!yaml_scalar_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:str", "version", -1,
-                                1, 1, YAML_PLAIN_SCALAR_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-
-                    /* Write '{'. */
-
-                    if (!yaml_mapping_start_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:map", 1,
-                                YAML_FLOW_MAPPING_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-
-                    /* Write 'major'. */
-
-                    if (!yaml_scalar_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:str", "major", -1,
-                                1, 1, YAML_PLAIN_SCALAR_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-
-                    /* Write a number. */
-
-                    sprintf(number, "%d", version->major);
-                    if (!yaml_scalar_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:int", number, -1,
-                                1, 1, YAML_PLAIN_SCALAR_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-
-                    /* Write 'minor'. */
-
-                    if (!yaml_scalar_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:str", "minor", -1,
-                                1, 1, YAML_PLAIN_SCALAR_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-
-                    /* Write a number. */
-
-                    sprintf(number, "%d", version->minor);
-                    if (!yaml_scalar_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:int", number, -1,
-                                1, 1, YAML_PLAIN_SCALAR_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-
-                    /* Write '}'. */
-
-                    if (!yaml_mapping_end_event_initialize(&output_event))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-                }
-
-                /* Display the document tag directives. */
-
-                if (input_event.data.document_start.tag_directives.start
-                        != input_event.data.document_start.tag_directives.end)
-                {
-                    yaml_tag_directive_t *tag;
-
-                    /* Write 'tags'. */
-                    
-                    if (!yaml_scalar_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:str", "tags", -1,
-                                1, 1, YAML_PLAIN_SCALAR_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-
-                    /* Start a block sequence. */
-
-                    if (!yaml_sequence_start_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:seq", 1,
-                                YAML_BLOCK_SEQUENCE_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-
-                    for (tag = input_event.data.document_start.tag_directives.start;
-                            tag != input_event.data.document_start.tag_directives.end;
-                            tag ++)
-                    {
-                        /* Write '{'. */
-
-                        if (!yaml_mapping_start_event_initialize(&output_event,
-                                    NULL, "tag:yaml.org,2002:map", 1,
-                                    YAML_FLOW_MAPPING_STYLE))
-                            goto event_error;
-                        if (!yaml_emitter_emit(&emitter, &output_event))
-                            goto emitter_error;
-
-                        /* Write 'handle'. */
-
-                        if (!yaml_scalar_event_initialize(&output_event,
-                                    NULL, "tag:yaml.org,2002:str", "handle", -1,
-                                    1, 1, YAML_PLAIN_SCALAR_STYLE))
-                            goto event_error;
-                        if (!yaml_emitter_emit(&emitter, &output_event))
-                            goto emitter_error;
-
-                        /* Write the tag directive handle. */
-
-                        if (!yaml_scalar_event_initialize(&output_event,
-                                    NULL, "tag:yaml.org,2002:str",
-                                    tag->handle, -1,
-                                    0, 1, YAML_DOUBLE_QUOTED_SCALAR_STYLE))
-                            goto event_error;
-                        if (!yaml_emitter_emit(&emitter, &output_event))
-                            goto emitter_error;
-
-                        /* Write 'prefix'. */
-
-                        if (!yaml_scalar_event_initialize(&output_event,
-                                    NULL, "tag:yaml.org,2002:str", "prefix", -1,
-                                    1, 1, YAML_PLAIN_SCALAR_STYLE))
-                            goto event_error;
-                        if (!yaml_emitter_emit(&emitter, &output_event))
-                            goto emitter_error;
-
-                        /* Write the tag directive prefix. */
-
-                        if (!yaml_scalar_event_initialize(&output_event,
-                                    NULL, "tag:yaml.org,2002:str",
-                                    tag->prefix, -1,
-                                    0, 1, YAML_DOUBLE_QUOTED_SCALAR_STYLE))
-                            goto event_error;
-                        if (!yaml_emitter_emit(&emitter, &output_event))
-                            goto emitter_error;
-
-                        /* Write '}'. */
-
-                        if (!yaml_mapping_end_event_initialize(&output_event))
-                            goto event_error;
-                        if (!yaml_emitter_emit(&emitter, &output_event))
-                            goto emitter_error;
-                    }
-
-                    /* End a block sequence. */
-
-                    if (!yaml_sequence_end_event_initialize(&output_event))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-                }
-
-                /* Write 'implicit'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "implicit", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Write if the document is implicit. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:bool",
-                            (input_event.data.document_start.implicit ?
-                             "true" : "false"), -1,
-                            1, 0, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                break;
-
-            case YAML_DOCUMENT_END_EVENT:
-
-                /* Write 'type'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "type", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Write 'DOCUMENT-END'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "DOCUMENT-END", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Write 'implicit'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "implicit", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Write if the document is implicit. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:bool",
-                            (input_event.data.document_end.implicit ?
-                             "true" : "false"), -1,
-                            1, 0, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                break;
-
-            case YAML_ALIAS_EVENT:
-
-                /* Write 'type'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "type", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Write 'ALIAS'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "ALIAS", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Write 'anchor'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "anchor", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Write the alias anchor. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str",
-                            input_event.data.alias.anchor, -1,
-                            0, 1, YAML_DOUBLE_QUOTED_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                break;
-
-            case YAML_SCALAR_EVENT:
-
-                /* Write 'type'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "type", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Write 'SCALAR'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "SCALAR", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Display the scalar anchor. */
-
-                if (input_event.data.scalar.anchor)
-                {
-                    /* Write 'anchor'. */
-
-                    if (!yaml_scalar_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:str", "anchor", -1,
-                                1, 1, YAML_PLAIN_SCALAR_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-
-                    /* Write the scalar anchor. */
-
-                    if (!yaml_scalar_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:str",
-                                input_event.data.scalar.anchor, -1,
-                                0, 1, YAML_DOUBLE_QUOTED_SCALAR_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-                }
-
-                /* Display the scalar tag. */
-
-                if (input_event.data.scalar.tag)
-                {
-                    /* Write 'tag'. */
-
-                    if (!yaml_scalar_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:str", "tag", -1,
-                                1, 1, YAML_PLAIN_SCALAR_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-
-                    /* Write the scalar tag. */
-
-                    if (!yaml_scalar_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:str",
-                                input_event.data.scalar.tag, -1,
-                                0, 1, YAML_DOUBLE_QUOTED_SCALAR_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-                }
-
-                /* Display the scalar value. */
-
-                /* Write 'value'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "value", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Write the scalar value. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str",
-                            input_event.data.scalar.value,
-                            input_event.data.scalar.length,
-                            0, 1, YAML_DOUBLE_QUOTED_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Display if the scalar tag is implicit. */
-
-                /* Write 'implicit'. */
-                
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "implicit", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Write '{'. */
-
-                if (!yaml_mapping_start_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:map", 1,
-                            YAML_FLOW_MAPPING_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Write 'plain'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "plain", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Write if the scalar is implicit in the plain style. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:bool",
-                            (input_event.data.scalar.plain_implicit ?
-                             "true" : "false"), -1,
-                            1, 0, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Write 'quoted'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "non-plain", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Write if the scalar is implicit in a non-plain style. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:bool",
-                            (input_event.data.scalar.quoted_implicit ?
-                             "true" : "false"), -1,
-                            1, 0, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Write '}'. */
-
-                if (!yaml_mapping_end_event_initialize(&output_event))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Display the style information. */
-
-                if (input_event.data.scalar.style)
-                {
-                    yaml_scalar_style_t style = input_event.data.scalar.style;
-
-                    /* Write 'style'. */
-
-                    if (!yaml_scalar_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:str", "style", -1,
-                                1, 1, YAML_PLAIN_SCALAR_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-
-                    /* Write the scalar style. */
-
-                    if (!yaml_scalar_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:str",
-                                (style == YAML_PLAIN_SCALAR_STYLE ? "plain" :
-                                 style == YAML_SINGLE_QUOTED_SCALAR_STYLE ?
-                                        "single-quoted" :
-                                 style == YAML_DOUBLE_QUOTED_SCALAR_STYLE ?
-                                        "double-quoted" :
-                                 style == YAML_LITERAL_SCALAR_STYLE ? "literal" :
-                                 style == YAML_FOLDED_SCALAR_STYLE ? "folded" :
-                                 "unknown"), -1,
-                                1, 1, YAML_PLAIN_SCALAR_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-                }
-
-                break;
-
-            case YAML_SEQUENCE_START_EVENT:
-
-                /* Write 'type'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "type", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Write 'SEQUENCE-START'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "SEQUENCE-START", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Display the sequence anchor. */
-
-                if (input_event.data.sequence_start.anchor)
-                {
-                    /* Write 'anchor'. */
-
-                    if (!yaml_scalar_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:str", "anchor", -1,
-                                1, 1, YAML_PLAIN_SCALAR_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-
-                    /* Write the sequence anchor. */
-
-                    if (!yaml_scalar_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:str",
-                                input_event.data.sequence_start.anchor, -1,
-                                0, 1, YAML_DOUBLE_QUOTED_SCALAR_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-                }
-
-                /* Display the sequence tag. */
-
-                if (input_event.data.sequence_start.tag)
-                {
-                    /* Write 'tag'. */
-
-                    if (!yaml_scalar_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:str", "tag", -1,
-                                1, 1, YAML_PLAIN_SCALAR_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-
-                    /* Write the sequence tag. */
-
-                    if (!yaml_scalar_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:str",
-                                input_event.data.sequence_start.tag, -1,
-                                0, 1, YAML_DOUBLE_QUOTED_SCALAR_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-                }
-
-                /* Write 'implicit'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "implicit", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Write if the sequence tag is implicit. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:bool",
-                            (input_event.data.sequence_start.implicit ?
-                             "true" : "false"), -1,
-                            1, 0, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Display the style information. */
-
-                if (input_event.data.sequence_start.style)
-                {
-                    yaml_sequence_style_t style
-                        = input_event.data.sequence_start.style;
-
-                    /* Write 'style'. */
-
-                    if (!yaml_scalar_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:str", "style", -1,
-                                1, 1, YAML_PLAIN_SCALAR_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-
-                    /* Write the scalar style. */
-
-                    if (!yaml_scalar_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:str",
-                                (style == YAML_BLOCK_SEQUENCE_STYLE ? "block" :
-                                 style == YAML_FLOW_SEQUENCE_STYLE ? "flow" :
-                                 "unknown"), -1,
-                                1, 1, YAML_PLAIN_SCALAR_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-                }
-
-                break;
-
-            case YAML_SEQUENCE_END_EVENT:
-
-                /* Write 'type'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "type", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Write 'SEQUENCE-END'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "SEQUENCE-END", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                break;
-
-            case YAML_MAPPING_START_EVENT:
-
-                /* Write 'type'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "type", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Write 'MAPPING-START'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "MAPPING-START", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Display the mapping anchor. */
-
-                if (input_event.data.mapping_start.anchor)
-                {
-                    /* Write 'anchor'. */
-
-                    if (!yaml_scalar_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:str", "anchor", -1,
-                                1, 1, YAML_PLAIN_SCALAR_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-
-                    /* Write the mapping anchor. */
-
-                    if (!yaml_scalar_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:str",
-                                input_event.data.mapping_start.anchor, -1,
-                                0, 1, YAML_DOUBLE_QUOTED_SCALAR_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-                }
-
-                /* Display the mapping tag. */
-
-                if (input_event.data.mapping_start.tag)
-                {
-                    /* Write 'tag'. */
-
-                    if (!yaml_scalar_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:str", "tag", -1,
-                                1, 1, YAML_PLAIN_SCALAR_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-
-                    /* Write the mapping tag. */
-
-                    if (!yaml_scalar_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:str",
-                                input_event.data.mapping_start.tag, -1,
-                                0, 1, YAML_DOUBLE_QUOTED_SCALAR_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-                }
-
-                /* Write 'implicit'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "implicit", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Write if the mapping tag is implicit. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:bool",
-                            (input_event.data.mapping_start.implicit ?
-                             "true" : "false"), -1,
-                            1, 0, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Display the style information. */
-
-                if (input_event.data.mapping_start.style)
-                {
-                    yaml_mapping_style_t style
-                        = input_event.data.mapping_start.style;
-
-                    /* Write 'style'. */
-
-                    if (!yaml_scalar_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:str", "style", -1,
-                                1, 1, YAML_PLAIN_SCALAR_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-
-                    /* Write the scalar style. */
-
-                    if (!yaml_scalar_event_initialize(&output_event,
-                                NULL, "tag:yaml.org,2002:str",
-                                (style == YAML_BLOCK_MAPPING_STYLE ? "block" :
-                                 style == YAML_FLOW_MAPPING_STYLE ? "flow" :
-                                 "unknown"), -1,
-                                1, 1, YAML_PLAIN_SCALAR_STYLE))
-                        goto event_error;
-                    if (!yaml_emitter_emit(&emitter, &output_event))
-                        goto emitter_error;
-                }
-
-                break;
-
-            case YAML_MAPPING_END_EVENT:
-
-                /* Write 'type'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "type", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                /* Write 'MAPPING-END'. */
-
-                if (!yaml_scalar_event_initialize(&output_event,
-                            NULL, "tag:yaml.org,2002:str", "MAPPING-END", -1,
-                            1, 1, YAML_PLAIN_SCALAR_STYLE))
-                    goto event_error;
-                if (!yaml_emitter_emit(&emitter, &output_event))
-                    goto emitter_error;
-
-                break;
-
-            default:
-                /* It couldn't really happen. */
-                break;
-        }
-
-        /* Delete the event object. */
-
-        yaml_event_delete(&input_event);
-
-        /* Create and emit a MAPPING-END event. */
-
-        if (!yaml_mapping_end_event_initialize(&output_event))
-            goto event_error;
-        if (!yaml_emitter_emit(&emitter, &output_event))
-            goto emitter_error;
-    }
-
-    /* Create and emit the SEQUENCE-END event. */
-
-    if (!yaml_sequence_end_event_initialize(&output_event))
-        goto event_error;
-    if (!yaml_emitter_emit(&emitter, &output_event))
-        goto emitter_error;
-
-    /* Create and emit the DOCUMENT-END event. */
-
-    if (!yaml_document_end_event_initialize(&output_event, 0))
-        goto event_error;
-    if (!yaml_emitter_emit(&emitter, &output_event))
-        goto emitter_error;
-
-    /* Create and emit the STREAM-END event. */
-
-    if (!yaml_stream_end_event_initialize(&output_event))
-        goto event_error;
-    if (!yaml_emitter_emit(&emitter, &output_event))
-        goto emitter_error;
-
-    yaml_parser_delete(&parser);
-    yaml_emitter_delete(&emitter);
-
-    return 0;
-
-parser_error:
-
-    /* Display a parser error message. */
-
-    switch (parser.error)
-    {
-        case YAML_MEMORY_ERROR:
-            fprintf(stderr, "Memory error: Not enough memory for parsing\n");
-            break;
-
-        case YAML_READER_ERROR:
-            if (parser.problem_value != -1) {
-                fprintf(stderr, "Reader error: %s: #%X at %d\n", parser.problem,
-                        parser.problem_value, parser.problem_offset);
-            }
-            else {
-                fprintf(stderr, "Reader error: %s at %d\n", parser.problem,
-                        parser.problem_offset);
-            }
-            break;
-
-        case YAML_SCANNER_ERROR:
-            if (parser.context) {
-                fprintf(stderr, "Scanner error: %s at line %d, column %d\n"
-                        "%s at line %d, column %d\n", parser.context,
-                        parser.context_mark.line+1, parser.context_mark.column+1,
-                        parser.problem, parser.problem_mark.line+1,
-                        parser.problem_mark.column+1);
-            }
-            else {
-                fprintf(stderr, "Scanner error: %s at line %d, column %d\n",
-                        parser.problem, parser.problem_mark.line+1,
-                        parser.problem_mark.column+1);
-            }
-            break;
-
-        case YAML_PARSER_ERROR:
-            if (parser.context) {
-                fprintf(stderr, "Parser error: %s at line %d, column %d\n"
-                        "%s at line %d, column %d\n", parser.context,
-                        parser.context_mark.line+1, parser.context_mark.column+1,
-                        parser.problem, parser.problem_mark.line+1,
-                        parser.problem_mark.column+1);
-            }
-            else {
-                fprintf(stderr, "Parser error: %s at line %d, column %d\n",
-                        parser.problem, parser.problem_mark.line+1,
-                        parser.problem_mark.column+1);
-            }
-            break;
-
-        default:
-            /* Couldn't happen. */
-            fprintf(stderr, "Internal error\n");
-            break;
-    }
-
-    yaml_event_delete(&input_event);
-    yaml_event_delete(&output_event);
-    yaml_parser_delete(&parser);
-    yaml_emitter_delete(&emitter);
-
-    return 1;
-
-emitter_error:
-
-    /* Display an emitter error message. */
-
-    switch (emitter.error)
-    {
-        case YAML_MEMORY_ERROR:
-            fprintf(stderr, "Memory error: Not enough memory for emitting\n");
-            break;
-
-        case YAML_WRITER_ERROR:
-            fprintf(stderr, "Writer error: %s\n", emitter.problem);
-            break;
-
-        case YAML_EMITTER_ERROR:
-            fprintf(stderr, "Emitter error: %s\n", emitter.problem);
-            break;
-
-        default:
-            /* Couldn't happen. */
-            fprintf(stderr, "Internal error\n");
-            break;
-    }
-
-    yaml_event_delete(&input_event);
-    yaml_event_delete(&output_event);
-    yaml_parser_delete(&parser);
-    yaml_emitter_delete(&emitter);
-
-    return 1;
-
-event_error:
-
-    fprintf(stderr, "Memory error: Not enough memory for creating an event\n");
-
-    yaml_event_delete(&input_event);
-    yaml_event_delete(&output_event);
-    yaml_parser_delete(&parser);
-    yaml_emitter_delete(&emitter);
-
-    return 1;
-}
-
diff --git a/yaml-0.1.3/tests/example-reformatter-alt.c b/yaml-0.1.3/tests/example-reformatter-alt.c
deleted file mode 100644
index 550e06c..0000000
--- a/yaml-0.1.3/tests/example-reformatter-alt.c
+++ /dev/null
@@ -1,217 +0,0 @@
-
-#include <yaml.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-
-int
-main(int argc, char *argv[])
-{
-    int help = 0;
-    int canonical = 0;
-    int unicode = 0;
-    int k;
-    int done = 0;
-
-    yaml_parser_t parser;
-    yaml_emitter_t emitter;
-    yaml_document_t document;
-
-    /* Clear the objects. */
-
-    memset(&parser, 0, sizeof(parser));
-    memset(&emitter, 0, sizeof(emitter));
-    memset(&document, 0, sizeof(document));
-
-    /* Analyze command line options. */
-
-    for (k = 1; k < argc; k ++)
-    {
-        if (strcmp(argv[k], "-h") == 0
-                || strcmp(argv[k], "--help") == 0) {
-            help = 1;
-        }
-
-        else if (strcmp(argv[k], "-c") == 0
-                || strcmp(argv[k], "--canonical") == 0) {
-            canonical = 1;
-        }
-
-        else if (strcmp(argv[k], "-u") == 0
-                || strcmp(argv[k], "--unicode") == 0) {
-            unicode = 1;
-        }
-
-        else {
-            fprintf(stderr, "Unrecognized option: %s\n"
-                    "Try `%s --help` for more information.\n",
-                    argv[k], argv[0]);
-            return 1;
-        }
-    }
-
-    /* Display the help string. */
-
-    if (help)
-    {
-        printf("%s [--canonical] [--unicode] <input >output\n"
-                "or\n%s -h | --help\nReformat a YAML stream\n\nOptions:\n"
-                "-h, --help\t\tdisplay this help and exit\n"
-                "-c, --canonical\t\toutput in the canonical YAML format\n"
-                "-u, --unicode\t\toutput unescaped non-ASCII characters\n",
-                argv[0], argv[0]);
-        return 0;
-    }
-
-    /* Initialize the parser and emitter objects. */
-
-    if (!yaml_parser_initialize(&parser))
-        goto parser_error;
-
-    if (!yaml_emitter_initialize(&emitter))
-        goto emitter_error;
-
-    /* Set the parser parameters. */
-
-    yaml_parser_set_input_file(&parser, stdin);
-
-    /* Set the emitter parameters. */
-
-    yaml_emitter_set_output_file(&emitter, stdout);
-
-    yaml_emitter_set_canonical(&emitter, canonical);
-    yaml_emitter_set_unicode(&emitter, unicode);
-
-    /* The main loop. */
-
-    while (!done)
-    {
-        /* Get the next event. */
-
-        if (!yaml_parser_load(&parser, &document))
-            goto parser_error;
-
-        /* Check if this is the stream end. */
-
-        if (!yaml_document_get_root_node(&document)) {
-            done = 1;
-        }
-
-        /* Emit the event. */
-
-        if (!yaml_emitter_dump(&emitter, &document))
-            goto emitter_error;
-    }
-
-    yaml_parser_delete(&parser);
-    yaml_emitter_delete(&emitter);
-
-    return 0;
-
-parser_error:
-
-    /* Display a parser error message. */
-
-    switch (parser.error)
-    {
-        case YAML_MEMORY_ERROR:
-            fprintf(stderr, "Memory error: Not enough memory for parsing\n");
-            break;
-
-        case YAML_READER_ERROR:
-            if (parser.problem_value != -1) {
-                fprintf(stderr, "Reader error: %s: #%X at %d\n", parser.problem,
-                        parser.problem_value, parser.problem_offset);
-            }
-            else {
-                fprintf(stderr, "Reader error: %s at %d\n", parser.problem,
-                        parser.problem_offset);
-            }
-            break;
-
-        case YAML_SCANNER_ERROR:
-            if (parser.context) {
-                fprintf(stderr, "Scanner error: %s at line %d, column %d\n"
-                        "%s at line %d, column %d\n", parser.context,
-                        parser.context_mark.line+1, parser.context_mark.column+1,
-                        parser.problem, parser.problem_mark.line+1,
-                        parser.problem_mark.column+1);
-            }
-            else {
-                fprintf(stderr, "Scanner error: %s at line %d, column %d\n",
-                        parser.problem, parser.problem_mark.line+1,
-                        parser.problem_mark.column+1);
-            }
-            break;
-
-        case YAML_PARSER_ERROR:
-            if (parser.context) {
-                fprintf(stderr, "Parser error: %s at line %d, column %d\n"
-                        "%s at line %d, column %d\n", parser.context,
-                        parser.context_mark.line+1, parser.context_mark.column+1,
-                        parser.problem, parser.problem_mark.line+1,
-                        parser.problem_mark.column+1);
-            }
-            else {
-                fprintf(stderr, "Parser error: %s at line %d, column %d\n",
-                        parser.problem, parser.problem_mark.line+1,
-                        parser.problem_mark.column+1);
-            }
-            break;
-
-        case YAML_COMPOSER_ERROR:
-            if (parser.context) {
-                fprintf(stderr, "Composer error: %s at line %d, column %d\n"
-                        "%s at line %d, column %d\n", parser.context,
-                        parser.context_mark.line+1, parser.context_mark.column+1,
-                        parser.problem, parser.problem_mark.line+1,
-                        parser.problem_mark.column+1);
-            }
-            else {
-                fprintf(stderr, "Composer error: %s at line %d, column %d\n",
-                        parser.problem, parser.problem_mark.line+1,
-                        parser.problem_mark.column+1);
-            }
-            break;
-
-        default:
-            /* Couldn't happen. */
-            fprintf(stderr, "Internal error\n");
-            break;
-    }
-
-    yaml_parser_delete(&parser);
-    yaml_emitter_delete(&emitter);
-
-    return 1;
-
-emitter_error:
-
-    /* Display an emitter error message. */
-
-    switch (emitter.error)
-    {
-        case YAML_MEMORY_ERROR:
-            fprintf(stderr, "Memory error: Not enough memory for emitting\n");
-            break;
-
-        case YAML_WRITER_ERROR:
-            fprintf(stderr, "Writer error: %s\n", emitter.problem);
-            break;
-
-        case YAML_EMITTER_ERROR:
-            fprintf(stderr, "Emitter error: %s\n", emitter.problem);
-            break;
-
-        default:
-            /* Couldn't happen. */
-            fprintf(stderr, "Internal error\n");
-            break;
-    }
-
-    yaml_parser_delete(&parser);
-    yaml_emitter_delete(&emitter);
-
-    return 1;
-}
-
diff --git a/yaml-0.1.3/tests/example-reformatter.c b/yaml-0.1.3/tests/example-reformatter.c
deleted file mode 100644
index 946d556..0000000
--- a/yaml-0.1.3/tests/example-reformatter.c
+++ /dev/null
@@ -1,202 +0,0 @@
-
-#include <yaml.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-
-int
-main(int argc, char *argv[])
-{
-    int help = 0;
-    int canonical = 0;
-    int unicode = 0;
-    int k;
-    int done = 0;
-
-    yaml_parser_t parser;
-    yaml_emitter_t emitter;
-    yaml_event_t event;
-
-    /* Clear the objects. */
-
-    memset(&parser, 0, sizeof(parser));
-    memset(&emitter, 0, sizeof(emitter));
-    memset(&event, 0, sizeof(event));
-
-    /* Analyze command line options. */
-
-    for (k = 1; k < argc; k ++)
-    {
-        if (strcmp(argv[k], "-h") == 0
-                || strcmp(argv[k], "--help") == 0) {
-            help = 1;
-        }
-
-        else if (strcmp(argv[k], "-c") == 0
-                || strcmp(argv[k], "--canonical") == 0) {
-            canonical = 1;
-        }
-
-        else if (strcmp(argv[k], "-u") == 0
-                || strcmp(argv[k], "--unicode") == 0) {
-            unicode = 1;
-        }
-
-        else {
-            fprintf(stderr, "Unrecognized option: %s\n"
-                    "Try `%s --help` for more information.\n",
-                    argv[k], argv[0]);
-            return 1;
-        }
-    }
-
-    /* Display the help string. */
-
-    if (help)
-    {
-        printf("%s [--canonical] [--unicode] <input >output\n"
-                "or\n%s -h | --help\nReformat a YAML stream\n\nOptions:\n"
-                "-h, --help\t\tdisplay this help and exit\n"
-                "-c, --canonical\t\toutput in the canonical YAML format\n"
-                "-u, --unicode\t\toutput unescaped non-ASCII characters\n",
-                argv[0], argv[0]);
-        return 0;
-    }
-
-    /* Initialize the parser and emitter objects. */
-
-    if (!yaml_parser_initialize(&parser))
-        goto parser_error;
-
-    if (!yaml_emitter_initialize(&emitter))
-        goto emitter_error;
-
-    /* Set the parser parameters. */
-
-    yaml_parser_set_input_file(&parser, stdin);
-
-    /* Set the emitter parameters. */
-
-    yaml_emitter_set_output_file(&emitter, stdout);
-
-    yaml_emitter_set_canonical(&emitter, canonical);
-    yaml_emitter_set_unicode(&emitter, unicode);
-
-    /* The main loop. */
-
-    while (!done)
-    {
-        /* Get the next event. */
-
-        if (!yaml_parser_parse(&parser, &event))
-            goto parser_error;
-
-        /* Check if this is the stream end. */
-
-        if (event.type == YAML_STREAM_END_EVENT) {
-            done = 1;
-        }
-
-        /* Emit the event. */
-
-        if (!yaml_emitter_emit(&emitter, &event))
-            goto emitter_error;
-    }
-
-    yaml_parser_delete(&parser);
-    yaml_emitter_delete(&emitter);
-
-    return 0;
-
-parser_error:
-
-    /* Display a parser error message. */
-
-    switch (parser.error)
-    {
-        case YAML_MEMORY_ERROR:
-            fprintf(stderr, "Memory error: Not enough memory for parsing\n");
-            break;
-
-        case YAML_READER_ERROR:
-            if (parser.problem_value != -1) {
-                fprintf(stderr, "Reader error: %s: #%X at %d\n", parser.problem,
-                        parser.problem_value, parser.problem_offset);
-            }
-            else {
-                fprintf(stderr, "Reader error: %s at %d\n", parser.problem,
-                        parser.problem_offset);
-            }
-            break;
-
-        case YAML_SCANNER_ERROR:
-            if (parser.context) {
-                fprintf(stderr, "Scanner error: %s at line %d, column %d\n"
-                        "%s at line %d, column %d\n", parser.context,
-                        parser.context_mark.line+1, parser.context_mark.column+1,
-                        parser.problem, parser.problem_mark.line+1,
-                        parser.problem_mark.column+1);
-            }
-            else {
-                fprintf(stderr, "Scanner error: %s at line %d, column %d\n",
-                        parser.problem, parser.problem_mark.line+1,
-                        parser.problem_mark.column+1);
-            }
-            break;
-
-        case YAML_PARSER_ERROR:
-            if (parser.context) {
-                fprintf(stderr, "Parser error: %s at line %d, column %d\n"
-                        "%s at line %d, column %d\n", parser.context,
-                        parser.context_mark.line+1, parser.context_mark.column+1,
-                        parser.problem, parser.problem_mark.line+1,
-                        parser.problem_mark.column+1);
-            }
-            else {
-                fprintf(stderr, "Parser error: %s at line %d, column %d\n",
-                        parser.problem, parser.problem_mark.line+1,
-                        parser.problem_mark.column+1);
-            }
-            break;
-
-        default:
-            /* Couldn't happen. */
-            fprintf(stderr, "Internal error\n");
-            break;
-    }
-
-    yaml_parser_delete(&parser);
-    yaml_emitter_delete(&emitter);
-
-    return 1;
-
-emitter_error:
-
-    /* Display an emitter error message. */
-
-    switch (emitter.error)
-    {
-        case YAML_MEMORY_ERROR:
-            fprintf(stderr, "Memory error: Not enough memory for emitting\n");
-            break;
-
-        case YAML_WRITER_ERROR:
-            fprintf(stderr, "Writer error: %s\n", emitter.problem);
-            break;
-
-        case YAML_EMITTER_ERROR:
-            fprintf(stderr, "Emitter error: %s\n", emitter.problem);
-            break;
-
-        default:
-            /* Couldn't happen. */
-            fprintf(stderr, "Internal error\n");
-            break;
-    }
-
-    yaml_parser_delete(&parser);
-    yaml_emitter_delete(&emitter);
-
-    return 1;
-}
-
diff --git a/yaml-0.1.3/tests/run-dumper.c b/yaml-0.1.3/tests/run-dumper.c
deleted file mode 100644
index 41bead4..0000000
--- a/yaml-0.1.3/tests/run-dumper.c
+++ /dev/null
@@ -1,311 +0,0 @@
-#include <yaml.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#ifdef NDEBUG
-#undef NDEBUG
-#endif
-#include <assert.h>
-
-#define BUFFER_SIZE 65536
-#define MAX_DOCUMENTS  16
-
-int copy_document(yaml_document_t *document_to, yaml_document_t *document_from)
-{
-    yaml_node_t *node;
-    yaml_node_item_t *item;
-    yaml_node_pair_t *pair;
-
-    if (!yaml_document_initialize(document_to, document_from->version_directive,
-                document_from->tag_directives.start,
-                document_from->tag_directives.end,
-                document_from->start_implicit, document_from->end_implicit))
-        return 0;
-
-    for (node = document_from->nodes.start;
-            node < document_from->nodes.top; node ++) {
-        switch (node->type) {
-            case YAML_SCALAR_NODE:
-                if (!yaml_document_add_scalar(document_to, node->tag,
-                            node->data.scalar.value, node->data.scalar.length,
-                            node->data.scalar.style)) goto error;
-                break;
-            case YAML_SEQUENCE_NODE:
-                if (!yaml_document_add_sequence(document_to, node->tag,
-                            node->data.sequence.style)) goto error;
-                break;
-            case YAML_MAPPING_NODE:
-                if (!yaml_document_add_mapping(document_to, node->tag,
-                            node->data.mapping.style)) goto error;
-                break;
-            default:
-                assert(0);
-                break;
-        }
-    }
-
-    for (node = document_from->nodes.start;
-            node < document_from->nodes.top; node ++) {
-        switch (node->type) {
-            case YAML_SEQUENCE_NODE:
-                for (item = node->data.sequence.items.start;
-                        item < node->data.sequence.items.top; item ++) {
-                    if (!yaml_document_append_sequence_item(document_to,
-                                node - document_from->nodes.start + 1,
-                                *item)) goto error;
-                }
-                break;
-            case YAML_MAPPING_NODE:
-                for (pair = node->data.mapping.pairs.start;
-                        pair < node->data.mapping.pairs.top; pair ++) {
-                    if (!yaml_document_append_mapping_pair(document_to,
-                                node - document_from->nodes.start + 1,
-                                pair->key, pair->value)) goto error;
-                }
-                break;
-            default:
-                break;
-        }
-    }
-    return 1;
-
-error:
-    yaml_document_delete(document_to);
-    return 0;
-}
-
-int compare_nodes(yaml_document_t *document1, int index1,
-        yaml_document_t *document2, int index2)
-{
-    yaml_node_t *node1 = yaml_document_get_node(document1, index1);
-    yaml_node_t *node2 = yaml_document_get_node(document2, index2);
-    int k;
-
-    assert(node1);
-    assert(node2);
-
-    if (node1->type != node2->type)
-        return 0;
-
-    if (strcmp((char *)node1->tag, (char *)node2->tag) != 0) return 0;
-
-    switch (node1->type) {
-        case YAML_SCALAR_NODE:
-            if (node1->data.scalar.length != node2->data.scalar.length)
-                return 0;
-            if (strncmp((char *)node1->data.scalar.value, (char *)node2->data.scalar.value,
-                        node1->data.scalar.length) != 0) return 0;
-            break;
-        case YAML_SEQUENCE_NODE:
-            if ((node1->data.sequence.items.top - node1->data.sequence.items.start) !=
-                    (node2->data.sequence.items.top - node2->data.sequence.items.start))
-                return 0;
-            for (k = 0; k < (node1->data.sequence.items.top - node1->data.sequence.items.start); k ++) {
-                if (!compare_nodes(document1, node1->data.sequence.items.start[k],
-                            document2, node2->data.sequence.items.start[k])) return 0;
-            }
-            break;
-        case YAML_MAPPING_NODE:
-            if ((node1->data.mapping.pairs.top - node1->data.mapping.pairs.start) !=
-                    (node2->data.mapping.pairs.top - node2->data.mapping.pairs.start))
-                return 0;
-            for (k = 0; k < (node1->data.mapping.pairs.top - node1->data.mapping.pairs.start); k ++) {
-                if (!compare_nodes(document1, node1->data.mapping.pairs.start[k].key,
-                            document2, node2->data.mapping.pairs.start[k].key)) return 0;
-                if (!compare_nodes(document1, node1->data.mapping.pairs.start[k].value,
-                            document2, node2->data.mapping.pairs.start[k].value)) return 0;
-            }
-            break;
-        default:
-            assert(0);
-            break;
-    }
-    return 1;
-}
-
-int compare_documents(yaml_document_t *document1, yaml_document_t *document2)
-{
-    int k;
-
-    if ((document1->version_directive && !document2->version_directive)
-            || (!document1->version_directive && document2->version_directive)
-            || (document1->version_directive && document2->version_directive
-                && (document1->version_directive->major != document2->version_directive->major
-                    || document1->version_directive->minor != document2->version_directive->minor)))
-        return 0;
-
-    if ((document1->tag_directives.end - document1->tag_directives.start) !=
-            (document2->tag_directives.end - document2->tag_directives.start))
-        return 0;
-    for (k = 0; k < (document1->tag_directives.end - document1->tag_directives.start); k ++) {
-        if ((strcmp((char *)document1->tag_directives.start[k].handle,
-                        (char *)document2->tag_directives.start[k].handle) != 0)
-                || (strcmp((char *)document1->tag_directives.start[k].prefix,
-                    (char *)document2->tag_directives.start[k].prefix) != 0))
-            return 0;
-    }
-
-    if ((document1->nodes.top - document1->nodes.start) !=
-            (document2->nodes.top - document2->nodes.start))
-        return 0;
-
-    if (document1->nodes.top != document1->nodes.start) {
-        if (!compare_nodes(document1, 1, document2, 1))
-            return 0;
-    }
-
-    return 1;
-}
-
-int print_output(char *name, unsigned char *buffer, size_t size, int count)
-{
-    FILE *file;
-    char data[BUFFER_SIZE];
-    size_t data_size = 1;
-    size_t total_size = 0;
-    if (count >= 0) {
-        printf("FAILED (at the document #%d)\nSOURCE:\n", count+1);
-    }
-    file = fopen(name, "rb");
-    assert(file);
-    while (data_size > 0) {
-        data_size = fread(data, 1, BUFFER_SIZE, file);
-        assert(!ferror(file));
-        if (!data_size) break;
-        assert(fwrite(data, 1, data_size, stdout) == data_size);
-        total_size += data_size;
-        if (feof(file)) break;
-    }
-    fclose(file);
-    printf("#### (length: %d)\n", total_size);
-    printf("OUTPUT:\n%s#### (length: %d)\n", buffer, size);
-    return 0;
-}
-
-int
-main(int argc, char *argv[])
-{
-    int number;
-    int canonical = 0;
-    int unicode = 0;
-
-    number = 1;
-    while (number < argc) {
-        if (strcmp(argv[number], "-c") == 0) {
-            canonical = 1;
-        }
-        else if (strcmp(argv[number], "-u") == 0) {
-            unicode = 1;
-        }
-        else if (argv[number][0] == '-') {
-            printf("Unknown option: '%s'\n", argv[number]);
-            return 0;
-        }
-        if (argv[number][0] == '-') {
-            if (number < argc-1) {
-                memmove(argv+number, argv+number+1, (argc-number-1)*sizeof(char *));
-            }
-            argc --;
-        }
-        else {
-            number ++;
-        }
-    }
-
-    if (argc < 2) {
-        printf("Usage: %s [-c] [-u] file1.yaml ...\n", argv[0]);
-        return 0;
-    }
-
-    for (number = 1; number < argc; number ++)
-    {
-        FILE *file;
-        yaml_parser_t parser;
-        yaml_emitter_t emitter;
-
-        yaml_document_t document;
-        unsigned char buffer[BUFFER_SIZE];
-        size_t written = 0;
-        yaml_document_t documents[MAX_DOCUMENTS];
-        size_t document_number = 0;
-        int done = 0;
-        int count = 0;
-        int error = 0;
-        int k;
-        memset(buffer, 0, BUFFER_SIZE);
-        memset(documents, 0, MAX_DOCUMENTS*sizeof(yaml_document_t));
-
-        printf("[%d] Loading, dumping, and loading again '%s': ", number, argv[number]);
-        fflush(stdout);
-
-        file = fopen(argv[number], "rb");
-        assert(file);
-
-        assert(yaml_parser_initialize(&parser));
-        yaml_parser_set_input_file(&parser, file);
-        assert(yaml_emitter_initialize(&emitter));
-        if (canonical) {
-            yaml_emitter_set_canonical(&emitter, 1);
-        }
-        if (unicode) {
-            yaml_emitter_set_unicode(&emitter, 1);
-        }
-        yaml_emitter_set_output_string(&emitter, buffer, BUFFER_SIZE, &written);
-        yaml_emitter_open(&emitter);
-
-        while (!done)
-        {
-            if (!yaml_parser_load(&parser, &document)) {
-                error = 1;
-                break;
-            }
-
-            done = (!yaml_document_get_root_node(&document));
-            if (!done) {
-                assert(document_number < MAX_DOCUMENTS);
-                assert(copy_document(&(documents[document_number++]), &document));
-                assert(yaml_emitter_dump(&emitter, &document) || 
-                        (yaml_emitter_flush(&emitter) && print_output(argv[number], buffer, written, count)));
-                count ++;
-            }
-            else {
-                yaml_document_delete(&document);
-            }
-        }
-
-        yaml_parser_delete(&parser);
-        assert(!fclose(file));
-        yaml_emitter_close(&emitter);
-        yaml_emitter_delete(&emitter);
-
-        if (!error)
-        {
-            count = done = 0;
-            assert(yaml_parser_initialize(&parser));
-            yaml_parser_set_input_string(&parser, buffer, written);
-
-            while (!done)
-            {
-                assert(yaml_parser_load(&parser, &document) || print_output(argv[number], buffer, written, count));
-                done = (!yaml_document_get_root_node(&document));
-                if (!done) {
-                    assert(compare_documents(documents+count, &document) || print_output(argv[number], buffer, written, count));
-                    count ++;
-                }
-                yaml_document_delete(&document);
-            }
-            yaml_parser_delete(&parser);
-        }
-
-        for (k = 0; k < document_number; k ++) {
-            yaml_document_delete(documents+k);
-        }
-
-        printf("PASSED (length: %d)\n", written);
-        print_output(argv[number], buffer, written, -1);
-    }
-
-    return 0;
-}
diff --git a/yaml-0.1.3/tests/run-emitter.c b/yaml-0.1.3/tests/run-emitter.c
deleted file mode 100644
index 6b246fa..0000000
--- a/yaml-0.1.3/tests/run-emitter.c
+++ /dev/null
@@ -1,327 +0,0 @@
-#include <yaml.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#ifdef NDEBUG
-#undef NDEBUG
-#endif
-#include <assert.h>
-
-#define BUFFER_SIZE 65536
-#define MAX_EVENTS  1024
-
-int copy_event(yaml_event_t *event_to, yaml_event_t *event_from)
-{
-    switch (event_from->type)
-    {
-        case YAML_STREAM_START_EVENT:
-            return yaml_stream_start_event_initialize(event_to,
-                    event_from->data.stream_start.encoding);
-
-        case YAML_STREAM_END_EVENT:
-            return yaml_stream_end_event_initialize(event_to);
-
-        case YAML_DOCUMENT_START_EVENT:
-            return yaml_document_start_event_initialize(event_to,
-                    event_from->data.document_start.version_directive,
-                    event_from->data.document_start.tag_directives.start,
-                    event_from->data.document_start.tag_directives.end,
-                    event_from->data.document_start.implicit);
-
-        case YAML_DOCUMENT_END_EVENT:
-            return yaml_document_end_event_initialize(event_to,
-                    event_from->data.document_end.implicit);
-
-        case YAML_ALIAS_EVENT:
-            return yaml_alias_event_initialize(event_to,
-                    event_from->data.alias.anchor);
-
-        case YAML_SCALAR_EVENT:
-            return yaml_scalar_event_initialize(event_to,
-                    event_from->data.scalar.anchor,
-                    event_from->data.scalar.tag,
-                    event_from->data.scalar.value,
-                    event_from->data.scalar.length,
-                    event_from->data.scalar.plain_implicit,
-                    event_from->data.scalar.quoted_implicit,
-                    event_from->data.scalar.style);
-
-        case YAML_SEQUENCE_START_EVENT:
-            return yaml_sequence_start_event_initialize(event_to,
-                    event_from->data.sequence_start.anchor,
-                    event_from->data.sequence_start.tag,
-                    event_from->data.sequence_start.implicit,
-                    event_from->data.sequence_start.style);
-
-        case YAML_SEQUENCE_END_EVENT:
-            return yaml_sequence_end_event_initialize(event_to);
-
-        case YAML_MAPPING_START_EVENT:
-            return yaml_mapping_start_event_initialize(event_to,
-                    event_from->data.mapping_start.anchor,
-                    event_from->data.mapping_start.tag,
-                    event_from->data.mapping_start.implicit,
-                    event_from->data.mapping_start.style);
-
-        case YAML_MAPPING_END_EVENT:
-            return yaml_mapping_end_event_initialize(event_to);
-
-        default:
-            assert(1);
-    }
-
-    return 0;
-}
-
-int compare_events(yaml_event_t *event1, yaml_event_t *event2)
-{
-    int k;
-
-    if (event1->type != event2->type)
-        return 0;
-
-    switch (event1->type)
-    {
-        case YAML_STREAM_START_EVENT:
-            return 1;
-            /* return (event1->data.stream_start.encoding ==
-                    event2->data.stream_start.encoding); */
-
-        case YAML_DOCUMENT_START_EVENT:
-            if ((event1->data.document_start.version_directive && !event2->data.document_start.version_directive)
-                    || (!event1->data.document_start.version_directive && event2->data.document_start.version_directive)
-                    || (event1->data.document_start.version_directive && event2->data.document_start.version_directive
-                        && (event1->data.document_start.version_directive->major != event2->data.document_start.version_directive->major
-                            || event1->data.document_start.version_directive->minor != event2->data.document_start.version_directive->minor)))
-                return 0;
-            if ((event1->data.document_start.tag_directives.end - event1->data.document_start.tag_directives.start) !=
-                    (event2->data.document_start.tag_directives.end - event2->data.document_start.tag_directives.start))
-                return 0;
-            for (k = 0; k < (event1->data.document_start.tag_directives.end - event1->data.document_start.tag_directives.start); k ++) {
-                if ((strcmp((char *)event1->data.document_start.tag_directives.start[k].handle,
-                                (char *)event2->data.document_start.tag_directives.start[k].handle) != 0)
-                        || (strcmp((char *)event1->data.document_start.tag_directives.start[k].prefix,
-                            (char *)event2->data.document_start.tag_directives.start[k].prefix) != 0))
-                    return 0;
-            }
-            /* if (event1->data.document_start.implicit != event2->data.document_start.implicit)
-                return 0; */
-            return 1;
-
-        case YAML_DOCUMENT_END_EVENT:
-            return 1;
-            /* return (event1->data.document_end.implicit ==
-                    event2->data.document_end.implicit); */
-
-        case YAML_ALIAS_EVENT:
-            return (strcmp((char *)event1->data.alias.anchor,
-                        (char *)event2->data.alias.anchor) == 0);
-
-        case YAML_SCALAR_EVENT:
-            if ((event1->data.scalar.anchor && !event2->data.scalar.anchor)
-                    || (!event1->data.scalar.anchor && event2->data.scalar.anchor)
-                    || (event1->data.scalar.anchor && event2->data.scalar.anchor
-                        && strcmp((char *)event1->data.scalar.anchor,
-                            (char *)event2->data.scalar.anchor) != 0))
-                return 0;
-            if ((event1->data.scalar.tag && !event2->data.scalar.tag
-                        && strcmp((char *)event1->data.scalar.tag, "!") != 0)
-                    || (!event1->data.scalar.tag && event2->data.scalar.tag
-                        && strcmp((char *)event2->data.scalar.tag, "!") != 0)
-                    || (event1->data.scalar.tag && event2->data.scalar.tag
-                        && strcmp((char *)event1->data.scalar.tag,
-                            (char *)event2->data.scalar.tag) != 0))
-                return 0;
-            if ((event1->data.scalar.length != event2->data.scalar.length)
-                    || memcmp(event1->data.scalar.value, event2->data.scalar.value,
-                        event1->data.scalar.length) != 0)
-                return 0;
-            if ((event1->data.scalar.plain_implicit != event2->data.scalar.plain_implicit)
-                    || (event2->data.scalar.quoted_implicit != event2->data.scalar.quoted_implicit)
-                    /* || (event2->data.scalar.style != event2->data.scalar.style) */)
-                return 0;
-            return 1;
-
-        case YAML_SEQUENCE_START_EVENT:
-            if ((event1->data.sequence_start.anchor && !event2->data.sequence_start.anchor)
-                    || (!event1->data.sequence_start.anchor && event2->data.sequence_start.anchor)
-                    || (event1->data.sequence_start.anchor && event2->data.sequence_start.anchor
-                        && strcmp((char *)event1->data.sequence_start.anchor,
-                            (char *)event2->data.sequence_start.anchor) != 0))
-                return 0;
-            if ((event1->data.sequence_start.tag && !event2->data.sequence_start.tag)
-                    || (!event1->data.sequence_start.tag && event2->data.sequence_start.tag)
-                    || (event1->data.sequence_start.tag && event2->data.sequence_start.tag
-                        && strcmp((char *)event1->data.sequence_start.tag,
-                            (char *)event2->data.sequence_start.tag) != 0))
-                return 0;
-            if ((event1->data.sequence_start.implicit != event2->data.sequence_start.implicit)
-                    /* || (event2->data.sequence_start.style != event2->data.sequence_start.style) */)
-                return 0;
-            return 1;
-
-        case YAML_MAPPING_START_EVENT:
-            if ((event1->data.mapping_start.anchor && !event2->data.mapping_start.anchor)
-                    || (!event1->data.mapping_start.anchor && event2->data.mapping_start.anchor)
-                    || (event1->data.mapping_start.anchor && event2->data.mapping_start.anchor
-                        && strcmp((char *)event1->data.mapping_start.anchor,
-                            (char *)event2->data.mapping_start.anchor) != 0))
-                return 0;
-            if ((event1->data.mapping_start.tag && !event2->data.mapping_start.tag)
-                    || (!event1->data.mapping_start.tag && event2->data.mapping_start.tag)
-                    || (event1->data.mapping_start.tag && event2->data.mapping_start.tag
-                        && strcmp((char *)event1->data.mapping_start.tag,
-                            (char *)event2->data.mapping_start.tag) != 0))
-                return 0;
-            if ((event1->data.mapping_start.implicit != event2->data.mapping_start.implicit)
-                    /* || (event2->data.mapping_start.style != event2->data.mapping_start.style) */)
-                return 0;
-            return 1;
-
-        default:
-            return 1;
-    }
-}
-
-int print_output(char *name, unsigned char *buffer, size_t size, int count)
-{
-    FILE *file;
-    char data[BUFFER_SIZE];
-    size_t data_size = 1;
-    size_t total_size = 0;
-    if (count >= 0) {
-        printf("FAILED (at the event #%d)\nSOURCE:\n", count+1);
-    }
-    file = fopen(name, "rb");
-    assert(file);
-    while (data_size > 0) {
-        data_size = fread(data, 1, BUFFER_SIZE, file);
-        assert(!ferror(file));
-        if (!data_size) break;
-        assert(fwrite(data, 1, data_size, stdout) == data_size);
-        total_size += data_size;
-        if (feof(file)) break;
-    }
-    fclose(file);
-    printf("#### (length: %d)\n", total_size);
-    printf("OUTPUT:\n%s#### (length: %d)\n", buffer, size);
-    return 0;
-}
-
-int
-main(int argc, char *argv[])
-{
-    int number;
-    int canonical = 0;
-    int unicode = 0;
-
-    number = 1;
-    while (number < argc) {
-        if (strcmp(argv[number], "-c") == 0) {
-            canonical = 1;
-        }
-        else if (strcmp(argv[number], "-u") == 0) {
-            unicode = 1;
-        }
-        else if (argv[number][0] == '-') {
-            printf("Unknown option: '%s'\n", argv[number]);
-            return 0;
-        }
-        if (argv[number][0] == '-') {
-            if (number < argc-1) {
-                memmove(argv+number, argv+number+1, (argc-number-1)*sizeof(char *));
-            }
-            argc --;
-        }
-        else {
-            number ++;
-        }
-    }
-
-    if (argc < 2) {
-        printf("Usage: %s [-c] [-u] file1.yaml ...\n", argv[0]);
-        return 0;
-    }
-
-    for (number = 1; number < argc; number ++)
-    {
-        FILE *file;
-        yaml_parser_t parser;
-        yaml_emitter_t emitter;
-        yaml_event_t event;
-        unsigned char buffer[BUFFER_SIZE];
-        size_t written = 0;
-        yaml_event_t events[MAX_EVENTS];
-        size_t event_number = 0;
-        int done = 0;
-        int count = 0;
-        int error = 0;
-        int k;
-        memset(buffer, 0, BUFFER_SIZE);
-        memset(events, 0, MAX_EVENTS*sizeof(yaml_event_t));
-
-        printf("[%d] Parsing, emitting, and parsing again '%s': ", number, argv[number]);
-        fflush(stdout);
-
-        file = fopen(argv[number], "rb");
-        assert(file);
-
-        assert(yaml_parser_initialize(&parser));
-        yaml_parser_set_input_file(&parser, file);
-        assert(yaml_emitter_initialize(&emitter));
-        if (canonical) {
-            yaml_emitter_set_canonical(&emitter, 1);
-        }
-        if (unicode) {
-            yaml_emitter_set_unicode(&emitter, 1);
-        }
-        yaml_emitter_set_output_string(&emitter, buffer, BUFFER_SIZE, &written);
-
-        while (!done)
-        {
-            if (!yaml_parser_parse(&parser, &event)) {
-                error = 1;
-                break;
-            }
-
-            done = (event.type == YAML_STREAM_END_EVENT);
-            assert(event_number < MAX_EVENTS);
-            assert(copy_event(&(events[event_number++]), &event));
-            assert(yaml_emitter_emit(&emitter, &event) || 
-                    (yaml_emitter_flush(&emitter) && print_output(argv[number], buffer, written, count)));
-            count ++;
-        }
-
-        yaml_parser_delete(&parser);
-        assert(!fclose(file));
-        yaml_emitter_delete(&emitter);
-
-        if (!error)
-        {
-            count = done = 0;
-            assert(yaml_parser_initialize(&parser));
-            yaml_parser_set_input_string(&parser, buffer, written);
-
-            while (!done)
-            {
-                assert(yaml_parser_parse(&parser, &event) || print_output(argv[number], buffer, written, count));
-                done = (event.type == YAML_STREAM_END_EVENT);
-                assert(compare_events(events+count, &event) || print_output(argv[number], buffer, written, count));
-                yaml_event_delete(&event);
-                count ++;
-            }
-            yaml_parser_delete(&parser);
-        }
-
-        for (k = 0; k < event_number; k ++) {
-            yaml_event_delete(events+k);
-        }
-
-        printf("PASSED (length: %d)\n", written);
-        print_output(argv[number], buffer, written, -1);
-    }
-
-    return 0;
-}
diff --git a/yaml-0.1.3/tests/run-loader.c b/yaml-0.1.3/tests/run-loader.c
deleted file mode 100644
index 8c36b66..0000000
--- a/yaml-0.1.3/tests/run-loader.c
+++ /dev/null
@@ -1,63 +0,0 @@
-#include <yaml.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#ifdef NDEBUG
-#undef NDEBUG
-#endif
-#include <assert.h>
-
-int
-main(int argc, char *argv[])
-{
-    int number;
-
-    if (argc < 2) {
-        printf("Usage: %s file1.yaml ...\n", argv[0]);
-        return 0;
-    }
-
-    for (number = 1; number < argc; number ++)
-    {
-        FILE *file;
-        yaml_parser_t parser;
-        yaml_document_t document;
-        int done = 0;
-        int count = 0;
-        int error = 0;
-
-        printf("[%d] Loading '%s': ", number, argv[number]);
-        fflush(stdout);
-
-        file = fopen(argv[number], "rb");
-        assert(file);
-
-        assert(yaml_parser_initialize(&parser));
-
-        yaml_parser_set_input_file(&parser, file);
-
-        while (!done)
-        {
-            if (!yaml_parser_load(&parser, &document)) {
-                error = 1;
-                break;
-            }
-
-            done = (!yaml_document_get_root_node(&document));
-
-            yaml_document_delete(&document);
-
-            if (!done) count ++;
-        }
-
-        yaml_parser_delete(&parser);
-
-        assert(!fclose(file));
-
-        printf("%s (%d documents)\n", (error ? "FAILURE" : "SUCCESS"), count);
-    }
-
-    return 0;
-}
-
diff --git a/yaml-0.1.3/tests/run-parser.c b/yaml-0.1.3/tests/run-parser.c
deleted file mode 100644
index 1303112..0000000
--- a/yaml-0.1.3/tests/run-parser.c
+++ /dev/null
@@ -1,63 +0,0 @@
-#include <yaml.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#ifdef NDEBUG
-#undef NDEBUG
-#endif
-#include <assert.h>
-
-int
-main(int argc, char *argv[])
-{
-    int number;
-
-    if (argc < 2) {
-        printf("Usage: %s file1.yaml ...\n", argv[0]);
-        return 0;
-    }
-
-    for (number = 1; number < argc; number ++)
-    {
-        FILE *file;
-        yaml_parser_t parser;
-        yaml_event_t event;
-        int done = 0;
-        int count = 0;
-        int error = 0;
-
-        printf("[%d] Parsing '%s': ", number, argv[number]);
-        fflush(stdout);
-
-        file = fopen(argv[number], "rb");
-        assert(file);
-
-        assert(yaml_parser_initialize(&parser));
-
-        yaml_parser_set_input_file(&parser, file);
-
-        while (!done)
-        {
-            if (!yaml_parser_parse(&parser, &event)) {
-                error = 1;
-                break;
-            }
-
-            done = (event.type == YAML_STREAM_END_EVENT);
-
-            yaml_event_delete(&event);
-
-            count ++;
-        }
-
-        yaml_parser_delete(&parser);
-
-        assert(!fclose(file));
-
-        printf("%s (%d events)\n", (error ? "FAILURE" : "SUCCESS"), count);
-    }
-
-    return 0;
-}
-
diff --git a/yaml-0.1.3/tests/run-scanner.c b/yaml-0.1.3/tests/run-scanner.c
deleted file mode 100644
index 2c79e7c..0000000
--- a/yaml-0.1.3/tests/run-scanner.c
+++ /dev/null
@@ -1,63 +0,0 @@
-#include <yaml.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#ifdef NDEBUG
-#undef NDEBUG
-#endif
-#include <assert.h>
-
-int
-main(int argc, char *argv[])
-{
-    int number;
-
-    if (argc < 2) {
-        printf("Usage: %s file1.yaml ...\n", argv[0]);
-        return 0;
-    }
-
-    for (number = 1; number < argc; number ++)
-    {
-        FILE *file;
-        yaml_parser_t parser;
-        yaml_token_t token;
-        int done = 0;
-        int count = 0;
-        int error = 0;
-
-        printf("[%d] Scanning '%s': ", number, argv[number]);
-        fflush(stdout);
-
-        file = fopen(argv[number], "rb");
-        assert(file);
-
-        assert(yaml_parser_initialize(&parser));
-
-        yaml_parser_set_input_file(&parser, file);
-
-        while (!done)
-        {
-            if (!yaml_parser_scan(&parser, &token)) {
-                error = 1;
-                break;
-            }
-
-            done = (token.type == YAML_STREAM_END_TOKEN);
-
-            yaml_token_delete(&token);
-
-            count ++;
-        }
-
-        yaml_parser_delete(&parser);
-
-        assert(!fclose(file));
-
-        printf("%s (%d tokens)\n", (error ? "FAILURE" : "SUCCESS"), count);
-    }
-
-    return 0;
-}
-
diff --git a/yaml-0.1.3/tests/test-reader.c b/yaml-0.1.3/tests/test-reader.c
deleted file mode 100644
index c6f84cd..0000000
--- a/yaml-0.1.3/tests/test-reader.c
+++ /dev/null
@@ -1,354 +0,0 @@
-#include <yaml.h>
-
-YAML_DECLARE(int)
-yaml_parser_update_buffer(yaml_parser_t *parser, size_t length);
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#ifdef NDEBUG
-#undef NDEBUG
-#endif
-#include <assert.h>
-
-/*
- * Test cases are stolen from
- * http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt
- */
-
-typedef struct {
-    char *title;
-    char *test;
-    int result;
-} test_case;
-
-test_case utf8_sequences[] = {
-    /* {"title", "test 1|test 2|...|test N!", (0 or 1)}, */
-
-    {"a simple test", "'test' is '\xd0\xbf\xd1\x80\xd0\xbe\xd0\xb2\xd0\xb5\xd1\x80\xd0\xba\xd0\xb0' in Russian!", 1},
-    {"an empty line", "!", 1},
-
-    {"u-0 is a control character", "\x00!", 0},
-    {"u-80 is a control character", "\xc2\x80!", 0},
-    {"u-800 is valid", "\xe0\xa0\x80!", 1},
-    {"u-10000 is valid", "\xf0\x90\x80\x80!", 1},
-    {"5 bytes sequences are not allowed", "\xf8\x88\x80\x80\x80!", 0},
-    {"6 bytes sequences are not allowed", "\xfc\x84\x80\x80\x80\x80!", 0},
-
-    {"u-7f is a control character", "\x7f!", 0},
-    {"u-7FF is valid", "\xdf\xbf!", 1},
-    {"u-FFFF is a control character", "\xef\xbf\xbf!", 0},
-    {"u-1FFFFF is too large", "\xf7\xbf\xbf\xbf!", 0},
-    {"u-3FFFFFF is 5 bytes", "\xfb\xbf\xbf\xbf\xbf!", 0},
-    {"u-7FFFFFFF is 6 bytes", "\xfd\xbf\xbf\xbf\xbf\xbf!", 0},
-
-    {"u-D7FF", "\xed\x9f\xbf!", 1},
-    {"u-E000", "\xee\x80\x80!", 1},
-    {"u-FFFD", "\xef\xbf\xbd!", 1},
-    {"u-10FFFF", "\xf4\x8f\xbf\xbf!", 1},
-    {"u-110000", "\xf4\x90\x80\x80!", 0},
-
-    {"first continuation byte", "\x80!", 0},
-    {"last continuation byte", "\xbf!", 0},
-
-    {"2 continuation bytes", "\x80\xbf!", 0},
-    {"3 continuation bytes", "\x80\xbf\x80!", 0},
-    {"4 continuation bytes", "\x80\xbf\x80\xbf!", 0},
-    {"5 continuation bytes", "\x80\xbf\x80\xbf\x80!", 0},
-    {"6 continuation bytes", "\x80\xbf\x80\xbf\x80\xbf!", 0},
-    {"7 continuation bytes", "\x80\xbf\x80\xbf\x80\xbf\x80!", 0},
-
-    {"sequence of all 64 possible continuation bytes",
-     "\x80|\x81|\x82|\x83|\x84|\x85|\x86|\x87|\x88|\x89|\x8a|\x8b|\x8c|\x8d|\x8e|\x8f|"
-     "\x90|\x91|\x92|\x93|\x94|\x95|\x96|\x97|\x98|\x99|\x9a|\x9b|\x9c|\x9d|\x9e|\x9f|"
-     "\xa0|\xa1|\xa2|\xa3|\xa4|\xa5|\xa6|\xa7|\xa8|\xa9|\xaa|\xab|\xac|\xad|\xae|\xaf|"
-     "\xb0|\xb1|\xb2|\xb3|\xb4|\xb5|\xb6|\xb7|\xb8|\xb9|\xba|\xbb|\xbc|\xbd|\xbe|\xbf!", 0},
-    {"32 first bytes of 2-byte sequences {0xc0-0xdf}",
-     "\xc0 |\xc1 |\xc2 |\xc3 |\xc4 |\xc5 |\xc6 |\xc7 |\xc8 |\xc9 |\xca |\xcb |\xcc |\xcd |\xce |\xcf |"
-     "\xd0 |\xd1 |\xd2 |\xd3 |\xd4 |\xd5 |\xd6 |\xd7 |\xd8 |\xd9 |\xda |\xdb |\xdc |\xdd |\xde |\xdf !", 0},
-    {"16 first bytes of 3-byte sequences {0xe0-0xef}",
-     "\xe0 |\xe1 |\xe2 |\xe3 |\xe4 |\xe5 |\xe6 |\xe7 |\xe8 |\xe9 |\xea |\xeb |\xec |\xed |\xee |\xef !", 0},
-    {"8 first bytes of 4-byte sequences {0xf0-0xf7}", "\xf0 |\xf1 |\xf2 |\xf3 |\xf4 |\xf5 |\xf6 |\xf7 !", 0},
-    {"4 first bytes of 5-byte sequences {0xf8-0xfb}", "\xf8 |\xf9 |\xfa |\xfb !", 0},
-    {"2 first bytes of 6-byte sequences {0xfc-0xfd}", "\xfc |\xfd !", 0},
-
-    {"sequences with last byte missing {u-0}",
-     "\xc0|\xe0\x80|\xf0\x80\x80|\xf8\x80\x80\x80|\xfc\x80\x80\x80\x80!", 0},
-    {"sequences with last byte missing {u-...FF}",
-     "\xdf|\xef\xbf|\xf7\xbf\xbf|\xfb\xbf\xbf\xbf|\xfd\xbf\xbf\xbf\xbf!", 0},
-
-    {"impossible bytes", "\xfe|\xff|\xfe\xfe\xff\xff!", 0},
-
-    {"overlong sequences {u-2f}",
-     "\xc0\xaf|\xe0\x80\xaf|\xf0\x80\x80\xaf|\xf8\x80\x80\x80\xaf|\xfc\x80\x80\x80\x80\xaf!", 0},
-
-    {"maximum overlong sequences",
-     "\xc1\xbf|\xe0\x9f\xbf|\xf0\x8f\xbf\xbf|\xf8\x87\xbf\xbf\xbf|\xfc\x83\xbf\xbf\xbf\xbf!", 0},
-
-    {"overlong representation of the NUL character",
-     "\xc0\x80|\xe0\x80\x80|\xf0\x80\x80\x80|\xf8\x80\x80\x80\x80|\xfc\x80\x80\x80\x80\x80!", 0},
-
-    {"single UTF-16 surrogates",
-     "\xed\xa0\x80|\xed\xad\xbf|\xed\xae\x80|\xed\xaf\xbf|\xed\xb0\x80|\xed\xbe\x80|\xed\xbf\xbf!", 0},
-
-    {"paired UTF-16 surrogates",
-     "\xed\xa0\x80\xed\xb0\x80|\xed\xa0\x80\xed\xbf\xbf|\xed\xad\xbf\xed\xb0\x80|"
-     "\xed\xad\xbf\xed\xbf\xbf|\xed\xae\x80\xed\xb0\x80|\xed\xae\x80\xed\xbf\xbf|"
-     "\xed\xaf\xbf\xed\xb0\x80|\xed\xaf\xbf\xed\xbf\xbf!", 0},
-
-    {"other illegal code positions", "\xef\xbf\xbe|\xef\xbf\xbf!", 0},
-
-    {NULL, NULL, 0}
-};
-
-test_case boms[] = {
-    
-    /* {"title", "test!", lenth}, */
-    
-    {"no bom (utf-8)", "Hi is \xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82!", 13},
-    {"bom (utf-8)", "\xef\xbb\xbfHi is \xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82!", 13},
-    {"bom (utf-16-le)", "\xff\xfeH\x00i\x00 \x00i\x00s\x00 \x00\x1f\x04@\x04""8\x04""2\x04""5\x04""B\x04!", 13},
-    {"bom (utf-16-be)", "\xfe\xff\x00H\x00i\x00 \x00i\x00s\x00 \x04\x1f\x04@\x04""8\x04""2\x04""5\x04""B!", 13},
-    {NULL, NULL, 0}
-};
-
-char *bom_original = "Hi is \xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82";
-
-int check_utf8_sequences(void)
-{
-    yaml_parser_t parser;
-    int failed = 0;
-    int k;
-    printf("checking utf-8 sequences...\n");
-    for (k = 0; utf8_sequences[k].test; k++) {
-        char *title = utf8_sequences[k].title;
-        int check = utf8_sequences[k].result;
-        int result;
-        char *start = utf8_sequences[k].test;
-        char *end = start;
-        printf("\t%s:\n", title);
-        while(1) {
-            while (*end != '|' && *end != '!') end++;
-            yaml_parser_initialize(&parser);
-            yaml_parser_set_input_string(&parser, (unsigned char *)start, end-start);
-            result = yaml_parser_update_buffer(&parser, end-start);
-            if (result != check) {
-                printf("\t\t- ");
-                failed ++;
-            }
-            else {
-                printf("\t\t+ ");
-            }
-            if (!parser.error) {
-                printf("(no error)\n");
-            }
-            else if (parser.error == YAML_READER_ERROR) {
-                if (parser.problem_value != -1) {
-                    printf("(reader error: %s: #%X at %d)\n",
-                            parser.problem, parser.problem_value, parser.problem_offset);
-                }
-                else {
-                    printf("(reader error: %s at %d)\n",
-                            parser.problem, parser.problem_offset);
-                }
-            }
-            if (*end == '!') break;
-            start = ++end;
-            yaml_parser_delete(&parser);
-        };
-        printf("\n");
-    }
-    printf("checking utf-8 sequences: %d fail(s)\n", failed);
-    return failed;
-}
-
-int check_boms(void)
-{
-    yaml_parser_t parser;
-    int failed = 0;
-    int k;
-    printf("checking boms...\n");
-    for (k = 0; boms[k].test; k++) {
-        char *title = boms[k].title;
-        int check = boms[k].result;
-        int result;
-        char *start = boms[k].test;
-        char *end = start;
-        while (*end != '!') end++;
-        printf("\t%s: ", title);
-        yaml_parser_initialize(&parser);
-        yaml_parser_set_input_string(&parser, (unsigned char *)start, end-start);
-        result = yaml_parser_update_buffer(&parser, end-start);
-        if (!result) {
-            printf("- (reader error: %s at %d)\n", parser.problem, parser.problem_offset);
-            failed++;
-        }
-        else {
-            if (parser.unread != check) {
-                printf("- (length=%d while expected length=%d)\n", parser.unread, check);
-                failed++;
-            }
-            else if (memcmp(parser.buffer.start, bom_original, check) != 0) {
-                printf("- (value '%s' does not equal to the original value '%s')\n", parser.buffer.start, bom_original);
-                failed++;
-            }
-            else {
-                printf("+\n");
-            }
-        }
-        yaml_parser_delete(&parser);
-    }
-    printf("checking boms: %d fail(s)\n", failed);
-    return failed;
-}
-
-#define LONG    100000
-
-int check_long_utf8(void)
-{
-    yaml_parser_t parser;
-    int k = 0;
-    int j;
-    int failed = 0;
-    unsigned char ch0, ch1;
-    unsigned char *buffer = malloc(3+LONG*2);
-    assert(buffer);
-    printf("checking a long utf8 sequence...\n");
-    buffer[k++] = '\xef';
-    buffer[k++] = '\xbb';
-    buffer[k++] = '\xbf';
-    for (j = 0; j < LONG; j ++) {
-        if (j % 2) {
-            buffer[k++] = '\xd0';
-            buffer[k++] = '\x90';
-        }
-        else {
-            buffer[k++] = '\xd0';
-            buffer[k++] = '\xaf';
-        }
-    }
-    yaml_parser_initialize(&parser);
-    yaml_parser_set_input_string(&parser, buffer, 3+LONG*2);
-    for (k = 0; k < LONG; k++) {
-        if (!parser.unread) {
-            if (!yaml_parser_update_buffer(&parser, 1)) {
-                printf("\treader error: %s at %d\n", parser.problem, parser.problem_offset);
-                failed = 1;
-                break;
-            }
-        }
-        if (!parser.unread) {
-            printf("\tnot enough characters at %d\n", k);
-            failed = 1;
-            break;
-        }
-        if (k % 2) {
-            ch0 = '\xd0';
-            ch1 = '\x90';
-        }
-        else {
-            ch0 = '\xd0';
-            ch1 = '\xaf';
-        }
-        if (parser.buffer.pointer[0] != ch0 || parser.buffer.pointer[1] != ch1) {
-            printf("\tincorrect UTF-8 sequence: %X %X instead of %X %X\n",
-                    (int)parser.buffer.pointer[0], (int)parser.buffer.pointer[1],
-                    (int)ch0, (int)ch1);
-            failed = 1;
-            break;
-        }
-        parser.buffer.pointer += 2;
-        parser.unread -= 1;
-    }
-    if (!failed) {
-        if (!yaml_parser_update_buffer(&parser, 1)) {
-            printf("\treader error: %s at %d\n", parser.problem, parser.problem_offset);
-            failed = 1;
-        }
-        else if (parser.buffer.pointer[0] != '\0') {
-            printf("\texpected NUL, found %X (eof=%d, unread=%d)\n", (int)parser.buffer.pointer[0], parser.eof, parser.unread);
-            failed = 1;
-        }
-    }
-    yaml_parser_delete(&parser);
-    free(buffer);
-    printf("checking a long utf8 sequence: %d fail(s)\n", failed);
-    return failed;
-}
-
-int check_long_utf16(void)
-{
-    yaml_parser_t parser;
-    int k = 0;
-    int j;
-    int failed = 0;
-    unsigned char ch0, ch1;
-    unsigned char *buffer = malloc(2+LONG*2);
-    assert(buffer);
-    printf("checking a long utf16 sequence...\n");
-    buffer[k++] = '\xff';
-    buffer[k++] = '\xfe';
-    for (j = 0; j < LONG; j ++) {
-        if (j % 2) {
-            buffer[k++] = '\x10';
-            buffer[k++] = '\x04';
-        }
-        else {
-            buffer[k++] = '/';
-            buffer[k++] = '\x04';
-        }
-    }
-    yaml_parser_initialize(&parser);
-    yaml_parser_set_input_string(&parser, buffer, 2+LONG*2);
-    for (k = 0; k < LONG; k++) {
-        if (!parser.unread) {
-            if (!yaml_parser_update_buffer(&parser, 1)) {
-                printf("\treader error: %s at %d\n", parser.problem, parser.problem_offset);
-                failed = 1;
-                break;
-            }
-        }
-        if (!parser.unread) {
-            printf("\tnot enough characters at %d\n", k);
-            failed = 1;
-            break;
-        }
-        if (k % 2) {
-            ch0 = '\xd0';
-            ch1 = '\x90';
-        }
-        else {
-            ch0 = '\xd0';
-            ch1 = '\xaf';
-        }
-        if (parser.buffer.pointer[0] != ch0 || parser.buffer.pointer[1] != ch1) {
-            printf("\tincorrect UTF-8 sequence: %X %X instead of %X %X\n",
-                    (int)parser.buffer.pointer[0], (int)parser.buffer.pointer[1],
-                    (int)ch0, (int)ch1);
-            failed = 1;
-            break;
-        }
-        parser.buffer.pointer += 2;
-        parser.unread -= 1;
-    }
-    if (!failed) {
-        if (!yaml_parser_update_buffer(&parser, 1)) {
-            printf("\treader error: %s at %d\n", parser.problem, parser.problem_offset);
-            failed = 1;
-        }
-        else if (parser.buffer.pointer[0] != '\0') {
-            printf("\texpected NUL, found %X (eof=%d, unread=%d)\n", (int)parser.buffer.pointer[0], parser.eof, parser.unread);
-            failed = 1;
-        }
-    }
-    yaml_parser_delete(&parser);
-    free(buffer);
-    printf("checking a long utf16 sequence: %d fail(s)\n", failed);
-    return failed;
-}
-
-int
-main(void)
-{
-    return check_utf8_sequences() + check_boms() + check_long_utf8() + check_long_utf16();
-}
diff --git a/yaml-0.1.3/tests/test-version.c b/yaml-0.1.3/tests/test-version.c
deleted file mode 100644
index e3e4a16..0000000
--- a/yaml-0.1.3/tests/test-version.c
+++ /dev/null
@@ -1,29 +0,0 @@
-#include <yaml.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#ifdef NDEBUG
-#undef NDEBUG
-#endif
-#include <assert.h>
-
-int
-main(void)
-{
-    int major = -1;
-    int minor = -1;
-    int patch = -1;
-    char buf[64];
-
-    yaml_get_version(&major, &minor, &patch);
-    sprintf(buf, "%d.%d.%d", major, minor, patch);
-    assert(strcmp(buf, yaml_get_version_string()) == 0);
-
-    /* Print structure sizes. */
-    printf("sizeof(token) = %d\n", sizeof(yaml_token_t));
-    printf("sizeof(event) = %d\n", sizeof(yaml_event_t));
-    printf("sizeof(parser) = %d\n", sizeof(yaml_parser_t));
-
-    return 0;
-}
diff --git a/yaml-0.1.3/win32/Makefile.am b/yaml-0.1.3/win32/Makefile.am
deleted file mode 100644
index d225c3e..0000000
--- a/yaml-0.1.3/win32/Makefile.am
+++ /dev/null
@@ -1,24 +0,0 @@
-
-VC6_FILES =	vc6/libyaml.dsw vc6/yaml.dsp vc6/yamldll.dsp	\
-			vc6/test_version.dsp vc6/test_reader.dsp	\
-			vc6/run_scanner.dsp vc6/run_parser.dsp	\
-			vc6/run_loader.dsp vc6/run_emitter.dsp vc6/run_dumper.dsp	\
-			vc6/example_reformatter.dsp vc6/example_reformatter_alt.dsp	\
-			vc6/example_deconstructor.dsp vc6/example_deconstructor_alt.dsp
-
-VS2003_FILES = vs2003/libyaml.sln vs2003/yaml.vcproj vs2003/yamldll.vcproj	\
-			   vs2003/test_version.vcproj vs2003/test_reader.vcproj	\
-			   vs2003/run_scanner.vcproj vs2003/run_parser.vcproj	\
-			   vs2003/run_loader.vcproj vs2003/run_emitter.vcproj vs2003/run_dumper.vcproj	\
-			   vs2003/example_reformatter.vcproj vs2003/example_reformatter_alt.vcproj	\
-			   vs2003/example_deconstructor.vcproj vs2003/example_deconstructor_alt.vcproj
-
-VS2008_FILES = vs2008/libyaml.sln vs2008/yaml.vcproj vs2008/yamldll.vcproj	\
-			   vs2008/test_version.vcproj vs2008/test_reader.vcproj	\
-			   vs2008/run_scanner.vcproj vs2008/run_parser.vcproj	\
-			   vs2008/run_loader.vcproj vs2008/run_emitter.vcproj vs2008/run_dumper.vcproj	\
-			   vs2008/example_reformatter.vcproj vs2008/example_reformatter_alt.vcproj	\
-			   vs2008/example_deconstructor.vcproj vs2008/example_deconstructor_alt.vcproj
-
-EXTRA_DIST = config.h $(VC6_FILES) $(VS2003_FILES) $(VS2008_FILES)
-
diff --git a/yaml-0.1.3/win32/Makefile.in b/yaml-0.1.3/win32/Makefile.in
deleted file mode 100644
index c6fc087..0000000
--- a/yaml-0.1.3/win32/Makefile.in
+++ /dev/null
@@ -1,351 +0,0 @@
-# Makefile.in generated by automake 1.10.2 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = win32
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DOXYGEN = @DOXYGEN@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-YAML_LT_AGE = @YAML_LT_AGE@
-YAML_LT_CURRENT = @YAML_LT_CURRENT@
-YAML_LT_RELEASE = @YAML_LT_RELEASE@
-YAML_LT_REVISION = @YAML_LT_REVISION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-VC6_FILES = vc6/libyaml.dsw vc6/yaml.dsp vc6/yamldll.dsp	\
-			vc6/test_version.dsp vc6/test_reader.dsp	\
-			vc6/run_scanner.dsp vc6/run_parser.dsp	\
-			vc6/run_loader.dsp vc6/run_emitter.dsp vc6/run_dumper.dsp	\
-			vc6/example_reformatter.dsp vc6/example_reformatter_alt.dsp	\
-			vc6/example_deconstructor.dsp vc6/example_deconstructor_alt.dsp
-
-VS2003_FILES = vs2003/libyaml.sln vs2003/yaml.vcproj vs2003/yamldll.vcproj	\
-			   vs2003/test_version.vcproj vs2003/test_reader.vcproj	\
-			   vs2003/run_scanner.vcproj vs2003/run_parser.vcproj	\
-			   vs2003/run_loader.vcproj vs2003/run_emitter.vcproj vs2003/run_dumper.vcproj	\
-			   vs2003/example_reformatter.vcproj vs2003/example_reformatter_alt.vcproj	\
-			   vs2003/example_deconstructor.vcproj vs2003/example_deconstructor_alt.vcproj
-
-VS2008_FILES = vs2008/libyaml.sln vs2008/yaml.vcproj vs2008/yamldll.vcproj	\
-			   vs2008/test_version.vcproj vs2008/test_reader.vcproj	\
-			   vs2008/run_scanner.vcproj vs2008/run_parser.vcproj	\
-			   vs2008/run_loader.vcproj vs2008/run_emitter.vcproj vs2008/run_dumper.vcproj	\
-			   vs2008/example_reformatter.vcproj vs2008/example_reformatter_alt.vcproj	\
-			   vs2008/example_deconstructor.vcproj vs2008/example_deconstructor_alt.vcproj
-
-EXTRA_DIST = config.h $(VC6_FILES) $(VS2003_FILES) $(VS2008_FILES)
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  win32/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  win32/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
-	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-info: install-info-am
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-ps: install-ps-am
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	distclean distclean-generic distclean-libtool distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/yaml-0.1.3/win32/config.h b/yaml-0.1.3/win32/config.h
deleted file mode 100644
index bea85c9..0000000
--- a/yaml-0.1.3/win32/config.h
+++ /dev/null
@@ -1,4 +0,0 @@
-#define YAML_VERSION_MAJOR 0
-#define YAML_VERSION_MINOR 1
-#define YAML_VERSION_PATCH 3
-#define YAML_VERSION_STRING "0.1.3"
diff --git a/yaml-0.1.3/win32/vc6/example_deconstructor.dsp b/yaml-0.1.3/win32/vc6/example_deconstructor.dsp
deleted file mode 100644
index aafde40..0000000
--- a/yaml-0.1.3/win32/vc6/example_deconstructor.dsp
+++ /dev/null
@@ -1,102 +0,0 @@
-# Microsoft Developer Studio Project File - Name="example_deconstructor" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=example_deconstructor - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "example_deconstructor.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "example_deconstructor.mak" CFG="example_deconstructor - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "example_deconstructor - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "example_deconstructor - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "example_deconstructor - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Output/Release/bin"
-# PROP Intermediate_Dir "Build/Release/bin"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "YAML_DECLARE_STATIC" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "example_deconstructor - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Output/Debug/bin"
-# PROP Intermediate_Dir "Build/Debug/bin"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "YAML_DECLARE_STATIC" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF 
-
-# Begin Target
-
-# Name "example_deconstructor - Win32 Release"
-# Name "example_deconstructor - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE="..\..\tests\example-deconstructor.c"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/yaml-0.1.3/win32/vc6/example_deconstructor_alt.dsp b/yaml-0.1.3/win32/vc6/example_deconstructor_alt.dsp
deleted file mode 100644
index 8540fcb..0000000
--- a/yaml-0.1.3/win32/vc6/example_deconstructor_alt.dsp
+++ /dev/null
@@ -1,102 +0,0 @@
-# Microsoft Developer Studio Project File - Name="example_deconstructor_alt" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=example_deconstructor_alt - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "example_deconstructor_alt.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "example_deconstructor_alt.mak" CFG="example_deconstructor_alt - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "example_deconstructor_alt - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "example_deconstructor_alt - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "example_deconstructor_alt - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Output/Release/bin"
-# PROP Intermediate_Dir "Build/Release/bin"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "YAML_DECLARE_STATIC" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "example_deconstructor_alt - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Output/Debug/bin"
-# PROP Intermediate_Dir "Build/Debug/bin"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "YAML_DECLARE_STATIC" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF 
-
-# Begin Target
-
-# Name "example_deconstructor_alt - Win32 Release"
-# Name "example_deconstructor_alt - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE="..\..\tests\example-deconstructor-alt.c"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/yaml-0.1.3/win32/vc6/example_reformatter.dsp b/yaml-0.1.3/win32/vc6/example_reformatter.dsp
deleted file mode 100644
index 8ddafb2..0000000
--- a/yaml-0.1.3/win32/vc6/example_reformatter.dsp
+++ /dev/null
@@ -1,102 +0,0 @@
-# Microsoft Developer Studio Project File - Name="example_reformatter" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=example_reformatter - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "example_reformatter.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "example_reformatter.mak" CFG="example_reformatter - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "example_reformatter - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "example_reformatter - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "example_reformatter - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Output/Release/bin"
-# PROP Intermediate_Dir "Build/Release/bin"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "YAML_DECLARE_STATIC" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "example_reformatter - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Output/Debug/bin"
-# PROP Intermediate_Dir "Build/Debug/bin"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "YAML_DECLARE_STATIC" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF 
-
-# Begin Target
-
-# Name "example_reformatter - Win32 Release"
-# Name "example_reformatter - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE="..\..\tests\example-reformatter.c"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/yaml-0.1.3/win32/vc6/example_reformatter_alt.dsp b/yaml-0.1.3/win32/vc6/example_reformatter_alt.dsp
deleted file mode 100644
index cc08a26..0000000
--- a/yaml-0.1.3/win32/vc6/example_reformatter_alt.dsp
+++ /dev/null
@@ -1,102 +0,0 @@
-# Microsoft Developer Studio Project File - Name="example_reformatter_alt" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=example_reformatter_alt - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "example_reformatter_alt.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "example_reformatter_alt.mak" CFG="example_reformatter_alt - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "example_reformatter_alt - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "example_reformatter_alt - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "example_reformatter_alt - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Output/Release/bin"
-# PROP Intermediate_Dir "Build/Release/bin"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "YAML_DECLARE_STATIC" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "example_reformatter_alt - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Output/Debug/bin"
-# PROP Intermediate_Dir "Build/Debug/bin"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "YAML_DECLARE_STATIC" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF 
-
-# Begin Target
-
-# Name "example_reformatter_alt - Win32 Release"
-# Name "example_reformatter_alt - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE="..\..\tests\example-reformatter-alt.c"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/yaml-0.1.3/win32/vc6/libyaml.dsw b/yaml-0.1.3/win32/vc6/libyaml.dsw
deleted file mode 100644
index 6981318..0000000
--- a/yaml-0.1.3/win32/vc6/libyaml.dsw
+++ /dev/null
@@ -1,206 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "example_deconstructor"=".\example_deconstructor.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name yaml
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "example_deconstructor_alt"=".\example_deconstructor_alt.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name yaml
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "example_reformatter"=".\example_reformatter.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name yaml
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "example_reformatter_alt"=".\example_reformatter_alt.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name yaml
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "run_dumper"=".\run_dumper.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name yaml
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "run_emitter"=".\run_emitter.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name yaml
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "run_loader"=".\run_loader.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name yaml
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "run_parser"=".\run_parser.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name yaml
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "run_scanner"=".\run_scanner.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name yaml
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "test_reader"=".\test_reader.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name yaml
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "test_version"=".\test_version.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name yaml
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "yaml"=".\yaml.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "yamldll"=".\yamldll.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/yaml-0.1.3/win32/vc6/run_dumper.dsp b/yaml-0.1.3/win32/vc6/run_dumper.dsp
deleted file mode 100644
index fea12a8..0000000
--- a/yaml-0.1.3/win32/vc6/run_dumper.dsp
+++ /dev/null
@@ -1,102 +0,0 @@
-# Microsoft Developer Studio Project File - Name="run_dumper" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=run_dumper - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "run_dumper.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "run_dumper.mak" CFG="run_dumper - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "run_dumper - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "run_dumper - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "run_dumper - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Output/Release/bin"
-# PROP Intermediate_Dir "Build/Release/bin"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "YAML_DECLARE_STATIC" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "run_dumper - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Output/Debug/bin"
-# PROP Intermediate_Dir "Build/Debug/bin"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "YAML_DECLARE_STATIC" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF 
-
-# Begin Target
-
-# Name "run_dumper - Win32 Release"
-# Name "run_dumper - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE="..\..\tests\run-dumper.c"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/yaml-0.1.3/win32/vc6/run_emitter.dsp b/yaml-0.1.3/win32/vc6/run_emitter.dsp
deleted file mode 100644
index e5793a9..0000000
--- a/yaml-0.1.3/win32/vc6/run_emitter.dsp
+++ /dev/null
@@ -1,102 +0,0 @@
-# Microsoft Developer Studio Project File - Name="run_emitter" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=run_emitter - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "run_emitter.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "run_emitter.mak" CFG="run_emitter - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "run_emitter - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "run_emitter - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "run_emitter - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Output/Release/bin"
-# PROP Intermediate_Dir "Build/Release/bin"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "YAML_DECLARE_STATIC" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "run_emitter - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Output/Debug/bin"
-# PROP Intermediate_Dir "Build/Debug/bin"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "YAML_DECLARE_STATIC" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF 
-
-# Begin Target
-
-# Name "run_emitter - Win32 Release"
-# Name "run_emitter - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE="..\..\tests\run-emitter.c"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/yaml-0.1.3/win32/vc6/run_loader.dsp b/yaml-0.1.3/win32/vc6/run_loader.dsp
deleted file mode 100644
index 3f6cd44..0000000
--- a/yaml-0.1.3/win32/vc6/run_loader.dsp
+++ /dev/null
@@ -1,102 +0,0 @@
-# Microsoft Developer Studio Project File - Name="run_loader" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=run_loader - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "run_loader.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "run_loader.mak" CFG="run_loader - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "run_loader - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "run_loader - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "run_loader - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Output/Release/bin"
-# PROP Intermediate_Dir "Build/Release/bin"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "YAML_DECLARE_STATIC" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "run_loader - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Output/Debug/bin"
-# PROP Intermediate_Dir "Build/Debug/bin"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "YAML_DECLARE_STATIC" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF 
-
-# Begin Target
-
-# Name "run_loader - Win32 Release"
-# Name "run_loader - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE="..\..\tests\run-loader.c"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/yaml-0.1.3/win32/vc6/run_parser.dsp b/yaml-0.1.3/win32/vc6/run_parser.dsp
deleted file mode 100644
index 1b2dd20..0000000
--- a/yaml-0.1.3/win32/vc6/run_parser.dsp
+++ /dev/null
@@ -1,102 +0,0 @@
-# Microsoft Developer Studio Project File - Name="run_parser" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=run_parser - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "run_parser.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "run_parser.mak" CFG="run_parser - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "run_parser - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "run_parser - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "run_parser - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Output/Release/bin"
-# PROP Intermediate_Dir "Build/Release/bin"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "YAML_DECLARE_STATIC" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "run_parser - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Output/Debug/bin"
-# PROP Intermediate_Dir "Build/Debug/bin"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "YAML_DECLARE_STATIC" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF 
-
-# Begin Target
-
-# Name "run_parser - Win32 Release"
-# Name "run_parser - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE="..\..\tests\run-parser.c"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/yaml-0.1.3/win32/vc6/run_scanner.dsp b/yaml-0.1.3/win32/vc6/run_scanner.dsp
deleted file mode 100644
index fd63545..0000000
--- a/yaml-0.1.3/win32/vc6/run_scanner.dsp
+++ /dev/null
@@ -1,102 +0,0 @@
-# Microsoft Developer Studio Project File - Name="run_scanner" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=run_scanner - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "run_scanner.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "run_scanner.mak" CFG="run_scanner - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "run_scanner - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "run_scanner - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "run_scanner - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Output/Release/bin"
-# PROP Intermediate_Dir "Build/Release/bin"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "YAML_DECLARE_STATIC" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "run_scanner - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Output/Debug/bin"
-# PROP Intermediate_Dir "Build/Debug/bin"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "YAML_DECLARE_STATIC" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF 
-
-# Begin Target
-
-# Name "run_scanner - Win32 Release"
-# Name "run_scanner - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE="..\..\tests\run-scanner.c"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/yaml-0.1.3/win32/vc6/test_reader.dsp b/yaml-0.1.3/win32/vc6/test_reader.dsp
deleted file mode 100644
index 450119a..0000000
--- a/yaml-0.1.3/win32/vc6/test_reader.dsp
+++ /dev/null
@@ -1,102 +0,0 @@
-# Microsoft Developer Studio Project File - Name="test_reader" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=test_reader - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "test_reader.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "test_reader.mak" CFG="test_reader - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "test_reader - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "test_reader - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "test_reader - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Output/Release/bin"
-# PROP Intermediate_Dir "Build/Release/bin"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "YAML_DECLARE_STATIC" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "test_reader - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Output/Debug/bin"
-# PROP Intermediate_Dir "Build/Debug/bin"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "YAML_DECLARE_STATIC" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF 
-
-# Begin Target
-
-# Name "test_reader - Win32 Release"
-# Name "test_reader - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE="..\..\tests\test-reader.c"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/yaml-0.1.3/win32/vc6/test_version.dsp b/yaml-0.1.3/win32/vc6/test_version.dsp
deleted file mode 100644
index 423c467..0000000
--- a/yaml-0.1.3/win32/vc6/test_version.dsp
+++ /dev/null
@@ -1,102 +0,0 @@
-# Microsoft Developer Studio Project File - Name="test_version" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=test_version - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "test_version.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "test_version.mak" CFG="test_version - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "test_version - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "test_version - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "test_version - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Output/Release/bin"
-# PROP Intermediate_Dir "Build/Release/bin"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "YAML_DECLARE_STATIC" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "test_version - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Output/Debug/bin"
-# PROP Intermediate_Dir "Build/Debug/bin"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "YAML_DECLARE_STATIC" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF 
-
-# Begin Target
-
-# Name "test_version - Win32 Release"
-# Name "test_version - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE="..\..\tests\test-version.c"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/yaml-0.1.3/win32/vc6/yaml.dsp b/yaml-0.1.3/win32/vc6/yaml.dsp
deleted file mode 100644
index 9535520..0000000
--- a/yaml-0.1.3/win32/vc6/yaml.dsp
+++ /dev/null
@@ -1,136 +0,0 @@
-# Microsoft Developer Studio Project File - Name="yaml" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=yaml - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "yaml.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "yaml.mak" CFG="yaml - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "yaml - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "yaml - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "yaml - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Output/Release/lib"
-# PROP Intermediate_Dir "Build/Release/lib"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I ".." /I "..\..\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "HAVE_CONFIG_H" /D "YAML_DECLARE_STATIC" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF  "$(CFG)" == "yaml - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Output/Debug/lib"
-# PROP Intermediate_Dir "Build/Debug/lib"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I ".." /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "HAVE_CONFIG_H" /D "YAML_DECLARE_STATIC" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ENDIF 
-
-# Begin Target
-
-# Name "yaml - Win32 Release"
-# Name "yaml - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\src\api.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\dumper.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\emitter.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\loader.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\parser.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\reader.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\scanner.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\writer.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\config.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\yaml.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\yaml_private.h
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/yaml-0.1.3/win32/vc6/yamldll.dsp b/yaml-0.1.3/win32/vc6/yamldll.dsp
deleted file mode 100644
index cc7895e..0000000
--- a/yaml-0.1.3/win32/vc6/yamldll.dsp
+++ /dev/null
@@ -1,147 +0,0 @@
-# Microsoft Developer Studio Project File - Name="yamldll" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=yamldll - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "yamldll.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "yamldll.mak" CFG="yamldll - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "yamldll - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "yamldll - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "yamldll - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Output/Release/lib/DLL"
-# PROP Intermediate_Dir "Build/Release/lib/DLL"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "YAMLDLL_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I ".." /I "..\..\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "HAVE_CONFIG_H" /D "YAML_DECLARE_EXPORT" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"Output/Release/lib/DLL/yaml.dll"
-
-!ELSEIF  "$(CFG)" == "yamldll - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Output/Debug/lib/DLL"
-# PROP Intermediate_Dir "Build/Debug/lib/DLL"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "YAMLDLL_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I ".." /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "HAVE_CONFIG_H" /D "YAML_DECLARE_EXPORT" /YX /FD /GZ /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"Output/Debug/lib/DLL/yaml.dll" /pdbtype:sept
-
-!ENDIF 
-
-# Begin Target
-
-# Name "yamldll - Win32 Release"
-# Name "yamldll - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\src\api.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\dumper.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\emitter.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\loader.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\parser.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\reader.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\scanner.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\writer.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\config.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\yaml.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\yaml_private.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/yaml-0.1.3/win32/vs2003/example_deconstructor.vcproj b/yaml-0.1.3/win32/vs2003/example_deconstructor.vcproj
deleted file mode 100644
index 0b5f56d..0000000
--- a/yaml-0.1.3/win32/vs2003/example_deconstructor.vcproj
+++ /dev/null
@@ -1,134 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.10"
-	Name="example_deconstructor"
-	ProjectGUID="{F8C735BD-5D83-4E21-8548-7984792033DB}"
-	Keyword="Win32Proj">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Output\Debug\bin"
-			IntermediateDirectory="Build\Debug\bin"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				MinimalRebuild="TRUE"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="4"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/example_deconstructor.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="TRUE"
-				ProgramDatabaseFile="$(OutDir)/example_deconstructor.pdb"
-				SubSystem="1"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Output\Release\bin"
-			IntermediateDirectory="Build\Release\bin"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="3"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/example_deconstructor.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="TRUE"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
-			<File
-				RelativePath="..\..\tests\example-deconstructor.c">
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/yaml-0.1.3/win32/vs2003/example_deconstructor_alt.vcproj b/yaml-0.1.3/win32/vs2003/example_deconstructor_alt.vcproj
deleted file mode 100644
index 7efbc41..0000000
--- a/yaml-0.1.3/win32/vs2003/example_deconstructor_alt.vcproj
+++ /dev/null
@@ -1,134 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.10"
-	Name="example_deconstructor_alt"
-	ProjectGUID="{AEBABE36-E103-4E4B-84D4-B4546285C35A}"
-	Keyword="Win32Proj">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Output\Debug\bin"
-			IntermediateDirectory="Build\Debug\bin"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				MinimalRebuild="TRUE"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="4"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/example_deconstructor_alt.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="TRUE"
-				ProgramDatabaseFile="$(OutDir)/example_deconstructor_alt.pdb"
-				SubSystem="1"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Output\Release\bin"
-			IntermediateDirectory="Build\Release\bin"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="3"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/example_deconstructor_alt.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="TRUE"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
-			<File
-				RelativePath="..\..\tests\example-deconstructor-alt.c">
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/yaml-0.1.3/win32/vs2003/example_reformatter.vcproj b/yaml-0.1.3/win32/vs2003/example_reformatter.vcproj
deleted file mode 100644
index 5564922..0000000
--- a/yaml-0.1.3/win32/vs2003/example_reformatter.vcproj
+++ /dev/null
@@ -1,134 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.10"
-	Name="example_reformatter"
-	ProjectGUID="{BC86310C-0914-4F66-9272-30FD09900D70}"
-	Keyword="Win32Proj">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Output\Debug\bin"
-			IntermediateDirectory="Build\Debug\bin"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				MinimalRebuild="TRUE"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="4"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/example_reformatter.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="TRUE"
-				ProgramDatabaseFile="$(OutDir)/example_reformatter.pdb"
-				SubSystem="1"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Output\Release\bin"
-			IntermediateDirectory="Build\Release\bin"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="3"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/example_reformatter.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="TRUE"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
-			<File
-				RelativePath="..\..\tests\example-reformatter.c">
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/yaml-0.1.3/win32/vs2003/example_reformatter_alt.vcproj b/yaml-0.1.3/win32/vs2003/example_reformatter_alt.vcproj
deleted file mode 100644
index ea4c77d..0000000
--- a/yaml-0.1.3/win32/vs2003/example_reformatter_alt.vcproj
+++ /dev/null
@@ -1,134 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.10"
-	Name="example_reformatter_alt"
-	ProjectGUID="{C0209B44-8A45-4D9E-B430-100679BC6B2D}"
-	Keyword="Win32Proj">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Output\Debug\bin"
-			IntermediateDirectory="Build\Debug\bin"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				MinimalRebuild="TRUE"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="4"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/example_reformatter_alt.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="TRUE"
-				ProgramDatabaseFile="$(OutDir)/example_reformatter_alt.pdb"
-				SubSystem="1"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Output\Release\bin"
-			IntermediateDirectory="Build\Release\bin"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="3"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/example_reformatter_alt.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="TRUE"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
-			<File
-				RelativePath="..\..\tests\example-reformatter-alt.c">
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/yaml-0.1.3/win32/vs2003/libyaml.sln b/yaml-0.1.3/win32/vs2003/libyaml.sln
deleted file mode 100644
index 6f8f6d5..0000000
--- a/yaml-0.1.3/win32/vs2003/libyaml.sln
+++ /dev/null
@@ -1,128 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 8.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "yaml", "yaml.vcproj", "{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "yamldll", "yamldll.vcproj", "{019A6F4C-E704-4879-8E53-622BD4BC9C89}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_deconstructor_alt", "example_deconstructor_alt.vcproj", "{AEBABE36-E103-4E4B-84D4-B4546285C35A}"
-	ProjectSection(ProjectDependencies) = postProject
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F} = {5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_deconstructor", "example_deconstructor.vcproj", "{F8C735BD-5D83-4E21-8548-7984792033DB}"
-	ProjectSection(ProjectDependencies) = postProject
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F} = {5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_reformatter", "example_reformatter.vcproj", "{BC86310C-0914-4F66-9272-30FD09900D70}"
-	ProjectSection(ProjectDependencies) = postProject
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F} = {5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_reformatter_alt", "example_reformatter_alt.vcproj", "{C0209B44-8A45-4D9E-B430-100679BC6B2D}"
-	ProjectSection(ProjectDependencies) = postProject
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F} = {5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "run_dumper", "run_dumper.vcproj", "{99AD9500-BD7A-4996-9FA2-2E4EAE7E6BCB}"
-	ProjectSection(ProjectDependencies) = postProject
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F} = {5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "run_emitter", "run_emitter.vcproj", "{CBA602BE-8FE4-4E68-A401-3C537EAA7239}"
-	ProjectSection(ProjectDependencies) = postProject
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F} = {5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "run_loader", "run_loader.vcproj", "{B9549FB7-A259-4518-A9CD-9D2108C2C728}"
-	ProjectSection(ProjectDependencies) = postProject
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F} = {5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "run_parser", "run_parser.vcproj", "{8EC75FB4-951D-4A19-8DCD-ED2E97E4B234}"
-	ProjectSection(ProjectDependencies) = postProject
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F} = {5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "run_scanner", "run_scanner.vcproj", "{5D3F321E-4A86-4842-9F45-105A7F373104}"
-	ProjectSection(ProjectDependencies) = postProject
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F} = {5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_reader", "test_reader.vcproj", "{898C9408-2480-4BF8-97B0-B1464B7BB5C4}"
-	ProjectSection(ProjectDependencies) = postProject
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F} = {5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_version", "test_version.vcproj", "{BF6CA7A9-0767-4A4E-BC42-9B7C8E105991}"
-	ProjectSection(ProjectDependencies) = postProject
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F} = {5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}
-	EndProjectSection
-EndProject
-Global
-	GlobalSection(SolutionConfiguration) = preSolution
-		Debug = Debug
-		Release = Release
-	EndGlobalSection
-	GlobalSection(ProjectConfiguration) = postSolution
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}.Debug.ActiveCfg = Debug|Win32
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}.Debug.Build.0 = Debug|Win32
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}.Release.ActiveCfg = Release|Win32
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}.Release.Build.0 = Release|Win32
-		{019A6F4C-E704-4879-8E53-622BD4BC9C89}.Debug.ActiveCfg = Debug|Win32
-		{019A6F4C-E704-4879-8E53-622BD4BC9C89}.Debug.Build.0 = Debug|Win32
-		{019A6F4C-E704-4879-8E53-622BD4BC9C89}.Release.ActiveCfg = Release|Win32
-		{019A6F4C-E704-4879-8E53-622BD4BC9C89}.Release.Build.0 = Release|Win32
-		{AEBABE36-E103-4E4B-84D4-B4546285C35A}.Debug.ActiveCfg = Debug|Win32
-		{AEBABE36-E103-4E4B-84D4-B4546285C35A}.Debug.Build.0 = Debug|Win32
-		{AEBABE36-E103-4E4B-84D4-B4546285C35A}.Release.ActiveCfg = Release|Win32
-		{AEBABE36-E103-4E4B-84D4-B4546285C35A}.Release.Build.0 = Release|Win32
-		{F8C735BD-5D83-4E21-8548-7984792033DB}.Debug.ActiveCfg = Debug|Win32
-		{F8C735BD-5D83-4E21-8548-7984792033DB}.Debug.Build.0 = Debug|Win32
-		{F8C735BD-5D83-4E21-8548-7984792033DB}.Release.ActiveCfg = Release|Win32
-		{F8C735BD-5D83-4E21-8548-7984792033DB}.Release.Build.0 = Release|Win32
-		{BC86310C-0914-4F66-9272-30FD09900D70}.Debug.ActiveCfg = Debug|Win32
-		{BC86310C-0914-4F66-9272-30FD09900D70}.Debug.Build.0 = Debug|Win32
-		{BC86310C-0914-4F66-9272-30FD09900D70}.Release.ActiveCfg = Release|Win32
-		{BC86310C-0914-4F66-9272-30FD09900D70}.Release.Build.0 = Release|Win32
-		{C0209B44-8A45-4D9E-B430-100679BC6B2D}.Debug.ActiveCfg = Debug|Win32
-		{C0209B44-8A45-4D9E-B430-100679BC6B2D}.Debug.Build.0 = Debug|Win32
-		{C0209B44-8A45-4D9E-B430-100679BC6B2D}.Release.ActiveCfg = Release|Win32
-		{C0209B44-8A45-4D9E-B430-100679BC6B2D}.Release.Build.0 = Release|Win32
-		{99AD9500-BD7A-4996-9FA2-2E4EAE7E6BCB}.Debug.ActiveCfg = Debug|Win32
-		{99AD9500-BD7A-4996-9FA2-2E4EAE7E6BCB}.Debug.Build.0 = Debug|Win32
-		{99AD9500-BD7A-4996-9FA2-2E4EAE7E6BCB}.Release.ActiveCfg = Release|Win32
-		{99AD9500-BD7A-4996-9FA2-2E4EAE7E6BCB}.Release.Build.0 = Release|Win32
-		{CBA602BE-8FE4-4E68-A401-3C537EAA7239}.Debug.ActiveCfg = Debug|Win32
-		{CBA602BE-8FE4-4E68-A401-3C537EAA7239}.Debug.Build.0 = Debug|Win32
-		{CBA602BE-8FE4-4E68-A401-3C537EAA7239}.Release.ActiveCfg = Release|Win32
-		{CBA602BE-8FE4-4E68-A401-3C537EAA7239}.Release.Build.0 = Release|Win32
-		{B9549FB7-A259-4518-A9CD-9D2108C2C728}.Debug.ActiveCfg = Debug|Win32
-		{B9549FB7-A259-4518-A9CD-9D2108C2C728}.Debug.Build.0 = Debug|Win32
-		{B9549FB7-A259-4518-A9CD-9D2108C2C728}.Release.ActiveCfg = Release|Win32
-		{B9549FB7-A259-4518-A9CD-9D2108C2C728}.Release.Build.0 = Release|Win32
-		{8EC75FB4-951D-4A19-8DCD-ED2E97E4B234}.Debug.ActiveCfg = Debug|Win32
-		{8EC75FB4-951D-4A19-8DCD-ED2E97E4B234}.Debug.Build.0 = Debug|Win32
-		{8EC75FB4-951D-4A19-8DCD-ED2E97E4B234}.Release.ActiveCfg = Release|Win32
-		{8EC75FB4-951D-4A19-8DCD-ED2E97E4B234}.Release.Build.0 = Release|Win32
-		{5D3F321E-4A86-4842-9F45-105A7F373104}.Debug.ActiveCfg = Debug|Win32
-		{5D3F321E-4A86-4842-9F45-105A7F373104}.Debug.Build.0 = Debug|Win32
-		{5D3F321E-4A86-4842-9F45-105A7F373104}.Release.ActiveCfg = Release|Win32
-		{5D3F321E-4A86-4842-9F45-105A7F373104}.Release.Build.0 = Release|Win32
-		{898C9408-2480-4BF8-97B0-B1464B7BB5C4}.Debug.ActiveCfg = Debug|Win32
-		{898C9408-2480-4BF8-97B0-B1464B7BB5C4}.Debug.Build.0 = Debug|Win32
-		{898C9408-2480-4BF8-97B0-B1464B7BB5C4}.Release.ActiveCfg = Release|Win32
-		{898C9408-2480-4BF8-97B0-B1464B7BB5C4}.Release.Build.0 = Release|Win32
-		{BF6CA7A9-0767-4A4E-BC42-9B7C8E105991}.Debug.ActiveCfg = Debug|Win32
-		{BF6CA7A9-0767-4A4E-BC42-9B7C8E105991}.Debug.Build.0 = Debug|Win32
-		{BF6CA7A9-0767-4A4E-BC42-9B7C8E105991}.Release.ActiveCfg = Release|Win32
-		{BF6CA7A9-0767-4A4E-BC42-9B7C8E105991}.Release.Build.0 = Release|Win32
-	EndGlobalSection
-	GlobalSection(ExtensibilityGlobals) = postSolution
-	EndGlobalSection
-	GlobalSection(ExtensibilityAddIns) = postSolution
-	EndGlobalSection
-EndGlobal
diff --git a/yaml-0.1.3/win32/vs2003/run_dumper.vcproj b/yaml-0.1.3/win32/vs2003/run_dumper.vcproj
deleted file mode 100644
index 713df63..0000000
--- a/yaml-0.1.3/win32/vs2003/run_dumper.vcproj
+++ /dev/null
@@ -1,134 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.10"
-	Name="run_dumper"
-	ProjectGUID="{99AD9500-BD7A-4996-9FA2-2E4EAE7E6BCB}"
-	Keyword="Win32Proj">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Output\Debug\bin"
-			IntermediateDirectory="Build\Debug\bin"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				MinimalRebuild="TRUE"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="4"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/run_dumper.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="TRUE"
-				ProgramDatabaseFile="$(OutDir)/run_dumper.pdb"
-				SubSystem="1"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Output\Release\bin"
-			IntermediateDirectory="Build\Release\bin"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="3"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/run_dumper.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="TRUE"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
-			<File
-				RelativePath="..\..\tests\run-dumper.c">
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/yaml-0.1.3/win32/vs2003/run_emitter.vcproj b/yaml-0.1.3/win32/vs2003/run_emitter.vcproj
deleted file mode 100644
index 65705ce..0000000
--- a/yaml-0.1.3/win32/vs2003/run_emitter.vcproj
+++ /dev/null
@@ -1,134 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.10"
-	Name="run_emitter"
-	ProjectGUID="{CBA602BE-8FE4-4E68-A401-3C537EAA7239}"
-	Keyword="Win32Proj">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Output\Debug\bin"
-			IntermediateDirectory="Build\Debug\bin"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				MinimalRebuild="TRUE"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="4"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/run_emitter.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="TRUE"
-				ProgramDatabaseFile="$(OutDir)/run_emitter.pdb"
-				SubSystem="1"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Output\Release\bin"
-			IntermediateDirectory="Build\Release\bin"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="3"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/run_emitter.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="TRUE"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
-			<File
-				RelativePath="..\..\tests\run-emitter.c">
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/yaml-0.1.3/win32/vs2003/run_loader.vcproj b/yaml-0.1.3/win32/vs2003/run_loader.vcproj
deleted file mode 100644
index e891ca2..0000000
--- a/yaml-0.1.3/win32/vs2003/run_loader.vcproj
+++ /dev/null
@@ -1,134 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.10"
-	Name="run_loader"
-	ProjectGUID="{B9549FB7-A259-4518-A9CD-9D2108C2C728}"
-	Keyword="Win32Proj">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Output\Debug\bin"
-			IntermediateDirectory="Build\Debug\bin"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				MinimalRebuild="TRUE"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="4"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/run_loader.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="TRUE"
-				ProgramDatabaseFile="$(OutDir)/run_loader.pdb"
-				SubSystem="1"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Output\Release\bin"
-			IntermediateDirectory="Build\Release\bin"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="3"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/run_loader.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="TRUE"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
-			<File
-				RelativePath="..\..\tests\run-loader.c">
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/yaml-0.1.3/win32/vs2003/run_parser.vcproj b/yaml-0.1.3/win32/vs2003/run_parser.vcproj
deleted file mode 100644
index 49393ee..0000000
--- a/yaml-0.1.3/win32/vs2003/run_parser.vcproj
+++ /dev/null
@@ -1,134 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.10"
-	Name="run_parser"
-	ProjectGUID="{8EC75FB4-951D-4A19-8DCD-ED2E97E4B234}"
-	Keyword="Win32Proj">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Output\Debug\bin"
-			IntermediateDirectory="Build\Debug\bin"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				MinimalRebuild="TRUE"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="4"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/run_parser.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="TRUE"
-				ProgramDatabaseFile="$(OutDir)/run_parser.pdb"
-				SubSystem="1"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Output\Release\bin"
-			IntermediateDirectory="Build\Release\bin"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="3"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/run_parser.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="TRUE"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
-			<File
-				RelativePath="..\..\tests\run-parser.c">
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/yaml-0.1.3/win32/vs2003/run_scanner.vcproj b/yaml-0.1.3/win32/vs2003/run_scanner.vcproj
deleted file mode 100644
index 626b252..0000000
--- a/yaml-0.1.3/win32/vs2003/run_scanner.vcproj
+++ /dev/null
@@ -1,134 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.10"
-	Name="run_scanner"
-	ProjectGUID="{5D3F321E-4A86-4842-9F45-105A7F373104}"
-	Keyword="Win32Proj">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Output\Debug\bin"
-			IntermediateDirectory="Build\Debug\bin"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				MinimalRebuild="TRUE"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="4"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/run_scanner.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="TRUE"
-				ProgramDatabaseFile="$(OutDir)/run_scanner.pdb"
-				SubSystem="1"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Output\Release\bin"
-			IntermediateDirectory="Build\Release\bin"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="3"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/run_scanner.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="TRUE"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
-			<File
-				RelativePath="..\..\tests\run-scanner.c">
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/yaml-0.1.3/win32/vs2003/test_reader.vcproj b/yaml-0.1.3/win32/vs2003/test_reader.vcproj
deleted file mode 100644
index 7f646fe..0000000
--- a/yaml-0.1.3/win32/vs2003/test_reader.vcproj
+++ /dev/null
@@ -1,134 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.10"
-	Name="test_reader"
-	ProjectGUID="{898C9408-2480-4BF8-97B0-B1464B7BB5C4}"
-	Keyword="Win32Proj">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Output\Debug\bin"
-			IntermediateDirectory="Build\Debug\bin"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				MinimalRebuild="TRUE"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="4"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/test_reader.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="TRUE"
-				ProgramDatabaseFile="$(OutDir)/test_reader.pdb"
-				SubSystem="1"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Output\Release\bin"
-			IntermediateDirectory="Build\Release\bin"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="3"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/test_reader.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="TRUE"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
-			<File
-				RelativePath="..\..\tests\test-reader.c">
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/yaml-0.1.3/win32/vs2003/test_version.vcproj b/yaml-0.1.3/win32/vs2003/test_version.vcproj
deleted file mode 100644
index df4a4da..0000000
--- a/yaml-0.1.3/win32/vs2003/test_version.vcproj
+++ /dev/null
@@ -1,134 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.10"
-	Name="test_version"
-	ProjectGUID="{BF6CA7A9-0767-4A4E-BC42-9B7C8E105991}"
-	Keyword="Win32Proj">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Output\Debug\bin"
-			IntermediateDirectory="Build\Debug\bin"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				MinimalRebuild="TRUE"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="4"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/test_version.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="TRUE"
-				ProgramDatabaseFile="$(OutDir)/test_version.pdb"
-				SubSystem="1"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Output\Release\bin"
-			IntermediateDirectory="Build\Release\bin"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="3"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/test_version.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="TRUE"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
-			<File
-				RelativePath="..\..\tests\test-version.c">
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/yaml-0.1.3/win32/vs2003/yaml.vcproj b/yaml-0.1.3/win32/vs2003/yaml.vcproj
deleted file mode 100644
index 252eb08..0000000
--- a/yaml-0.1.3/win32/vs2003/yaml.vcproj
+++ /dev/null
@@ -1,149 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.10"
-	Name="yaml"
-	ProjectGUID="{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}"
-	Keyword="Win32Proj">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Output\Debug\lib"
-			IntermediateDirectory="Build\Debug\lib"
-			ConfigurationType="4"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..;../../include"
-				PreprocessorDefinitions="HAVE_CONFIG_H;YAML_DECLARE_STATIC"
-				MinimalRebuild="TRUE"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="4"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="$(OutDir)/yaml.lib"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Output\Release\lib"
-			IntermediateDirectory="Build\Release\lib"
-			ConfigurationType="4"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="..;../../include"
-				PreprocessorDefinitions="HAVE_CONFIG_H;YAML_DECLARE_STATIC"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="3"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="$(OutDir)/yaml.lib"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
-			<File
-				RelativePath="..\..\src\api.c">
-			</File>
-			<File
-				RelativePath="..\..\src\dumper.c">
-			</File>
-			<File
-				RelativePath="..\..\src\emitter.c">
-			</File>
-			<File
-				RelativePath="..\..\src\loader.c">
-			</File>
-			<File
-				RelativePath="..\..\src\parser.c">
-			</File>
-			<File
-				RelativePath="..\..\src\reader.c">
-			</File>
-			<File
-				RelativePath="..\..\src\scanner.c">
-			</File>
-			<File
-				RelativePath="..\..\src\writer.c">
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
-			<File
-				RelativePath="..\config.h">
-			</File>
-			<File
-				RelativePath="..\..\include\yaml.h">
-			</File>
-			<File
-				RelativePath="..\..\src\yaml_private.h">
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/yaml-0.1.3/win32/vs2003/yamldll.vcproj b/yaml-0.1.3/win32/vs2003/yamldll.vcproj
deleted file mode 100644
index 7d472ce..0000000
--- a/yaml-0.1.3/win32/vs2003/yamldll.vcproj
+++ /dev/null
@@ -1,166 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.10"
-	Name="yamldll"
-	ProjectGUID="{019A6F4C-E704-4879-8E53-622BD4BC9C89}"
-	Keyword="Win32Proj">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Output\Debug\lib\DLL"
-			IntermediateDirectory="Build\Debug\lib\DLL"
-			ConfigurationType="2"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..;../../include"
-				PreprocessorDefinitions="HAVE_CONFIG_H;YAML_DECLARE_EXPORT"
-				MinimalRebuild="TRUE"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="4"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/yaml.dll"
-				LinkIncremental="2"
-				GenerateDebugInformation="TRUE"
-				ProgramDatabaseFile="$(OutDir)/yaml.pdb"
-				SubSystem="2"
-				ImportLibrary="$(OutDir)/yaml.lib"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Output\Release\lib\DLL"
-			IntermediateDirectory="Build\Release\lib\DLL"
-			ConfigurationType="2"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="..;../../include"
-				PreprocessorDefinitions="HAVE_CONFIG_H;YAML_DECLARE_EXPORT"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="3"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/yaml.dll"
-				LinkIncremental="1"
-				GenerateDebugInformation="TRUE"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				ImportLibrary="$(OutDir)/yaml.lib"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
-			<File
-				RelativePath="..\..\src\api.c">
-			</File>
-			<File
-				RelativePath="..\..\src\dumper.c">
-			</File>
-			<File
-				RelativePath="..\..\src\emitter.c">
-			</File>
-			<File
-				RelativePath="..\..\src\loader.c">
-			</File>
-			<File
-				RelativePath="..\..\src\parser.c">
-			</File>
-			<File
-				RelativePath="..\..\src\reader.c">
-			</File>
-			<File
-				RelativePath="..\..\src\scanner.c">
-			</File>
-			<File
-				RelativePath="..\..\src\writer.c">
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
-			<File
-				RelativePath="..\config.h">
-			</File>
-			<File
-				RelativePath="..\..\include\yaml.h">
-			</File>
-			<File
-				RelativePath="..\..\src\yaml_private.h">
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/yaml-0.1.3/win32/vs2008/example_deconstructor.vcproj b/yaml-0.1.3/win32/vs2008/example_deconstructor.vcproj
deleted file mode 100644
index a02a5ba..0000000
--- a/yaml-0.1.3/win32/vs2008/example_deconstructor.vcproj
+++ /dev/null
@@ -1,201 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9,00"
-	Name="example_deconstructor"
-	ProjectGUID="{F8C735BD-5D83-4E21-8548-7984792033DB}"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Output\Debug\bin"
-			IntermediateDirectory="Build\Debug\bin"
-			ConfigurationType="1"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/example_deconstructor.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/example_deconstructor.pdb"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Output\Release\bin"
-			IntermediateDirectory="Build\Release\bin"
-			ConfigurationType="1"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/example_deconstructor.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tests\example-deconstructor.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/yaml-0.1.3/win32/vs2008/example_deconstructor_alt.vcproj b/yaml-0.1.3/win32/vs2008/example_deconstructor_alt.vcproj
deleted file mode 100644
index 169cb99..0000000
--- a/yaml-0.1.3/win32/vs2008/example_deconstructor_alt.vcproj
+++ /dev/null
@@ -1,201 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9,00"
-	Name="example_deconstructor_alt"
-	ProjectGUID="{AEBABE36-E103-4E4B-84D4-B4546285C35A}"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Output\Debug\bin"
-			IntermediateDirectory="Build\Debug\bin"
-			ConfigurationType="1"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/example_deconstructor_alt.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/example_deconstructor_alt.pdb"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Output\Release\bin"
-			IntermediateDirectory="Build\Release\bin"
-			ConfigurationType="1"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/example_deconstructor_alt.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tests\example-deconstructor-alt.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/yaml-0.1.3/win32/vs2008/example_reformatter.vcproj b/yaml-0.1.3/win32/vs2008/example_reformatter.vcproj
deleted file mode 100644
index c2e1cee..0000000
--- a/yaml-0.1.3/win32/vs2008/example_reformatter.vcproj
+++ /dev/null
@@ -1,201 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9,00"
-	Name="example_reformatter"
-	ProjectGUID="{BC86310C-0914-4F66-9272-30FD09900D70}"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Output\Debug\bin"
-			IntermediateDirectory="Build\Debug\bin"
-			ConfigurationType="1"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/example_reformatter.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/example_reformatter.pdb"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Output\Release\bin"
-			IntermediateDirectory="Build\Release\bin"
-			ConfigurationType="1"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/example_reformatter.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tests\example-reformatter.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/yaml-0.1.3/win32/vs2008/example_reformatter_alt.vcproj b/yaml-0.1.3/win32/vs2008/example_reformatter_alt.vcproj
deleted file mode 100644
index 28e5b0f..0000000
--- a/yaml-0.1.3/win32/vs2008/example_reformatter_alt.vcproj
+++ /dev/null
@@ -1,201 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9,00"
-	Name="example_reformatter_alt"
-	ProjectGUID="{C0209B44-8A45-4D9E-B430-100679BC6B2D}"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Output\Debug\bin"
-			IntermediateDirectory="Build\Debug\bin"
-			ConfigurationType="1"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/example_reformatter_alt.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/example_reformatter_alt.pdb"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Output\Release\bin"
-			IntermediateDirectory="Build\Release\bin"
-			ConfigurationType="1"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/example_reformatter_alt.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tests\example-reformatter-alt.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/yaml-0.1.3/win32/vs2008/libyaml.sln b/yaml-0.1.3/win32/vs2008/libyaml.sln
deleted file mode 100644
index 4b1610a..0000000
--- a/yaml-0.1.3/win32/vs2008/libyaml.sln
+++ /dev/null
@@ -1,124 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual Studio 2008
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "yaml", "yaml.vcproj", "{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "yamldll", "yamldll.vcproj", "{019A6F4C-E704-4879-8E53-622BD4BC9C89}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_deconstructor_alt", "example_deconstructor_alt.vcproj", "{AEBABE36-E103-4E4B-84D4-B4546285C35A}"
-	ProjectSection(ProjectDependencies) = postProject
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F} = {5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_deconstructor", "example_deconstructor.vcproj", "{F8C735BD-5D83-4E21-8548-7984792033DB}"
-	ProjectSection(ProjectDependencies) = postProject
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F} = {5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_reformatter", "example_reformatter.vcproj", "{BC86310C-0914-4F66-9272-30FD09900D70}"
-	ProjectSection(ProjectDependencies) = postProject
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F} = {5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_reformatter_alt", "example_reformatter_alt.vcproj", "{C0209B44-8A45-4D9E-B430-100679BC6B2D}"
-	ProjectSection(ProjectDependencies) = postProject
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F} = {5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "run_dumper", "run_dumper.vcproj", "{99AD9500-BD7A-4996-9FA2-2E4EAE7E6BCB}"
-	ProjectSection(ProjectDependencies) = postProject
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F} = {5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "run_emitter", "run_emitter.vcproj", "{CBA602BE-8FE4-4E68-A401-3C537EAA7239}"
-	ProjectSection(ProjectDependencies) = postProject
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F} = {5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "run_loader", "run_loader.vcproj", "{B9549FB7-A259-4518-A9CD-9D2108C2C728}"
-	ProjectSection(ProjectDependencies) = postProject
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F} = {5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "run_parser", "run_parser.vcproj", "{8EC75FB4-951D-4A19-8DCD-ED2E97E4B234}"
-	ProjectSection(ProjectDependencies) = postProject
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F} = {5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "run_scanner", "run_scanner.vcproj", "{5D3F321E-4A86-4842-9F45-105A7F373104}"
-	ProjectSection(ProjectDependencies) = postProject
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F} = {5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_reader", "test_reader.vcproj", "{898C9408-2480-4BF8-97B0-B1464B7BB5C4}"
-	ProjectSection(ProjectDependencies) = postProject
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F} = {5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_version", "test_version.vcproj", "{BF6CA7A9-0767-4A4E-BC42-9B7C8E105991}"
-	ProjectSection(ProjectDependencies) = postProject
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F} = {5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}
-	EndProjectSection
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Release|Win32 = Release|Win32
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}.Debug|Win32.ActiveCfg = Debug|Win32
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}.Debug|Win32.Build.0 = Debug|Win32
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}.Release|Win32.ActiveCfg = Release|Win32
-		{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}.Release|Win32.Build.0 = Release|Win32
-		{019A6F4C-E704-4879-8E53-622BD4BC9C89}.Debug|Win32.ActiveCfg = Debug|Win32
-		{019A6F4C-E704-4879-8E53-622BD4BC9C89}.Debug|Win32.Build.0 = Debug|Win32
-		{019A6F4C-E704-4879-8E53-622BD4BC9C89}.Release|Win32.ActiveCfg = Release|Win32
-		{019A6F4C-E704-4879-8E53-622BD4BC9C89}.Release|Win32.Build.0 = Release|Win32
-		{AEBABE36-E103-4E4B-84D4-B4546285C35A}.Debug|Win32.ActiveCfg = Debug|Win32
-		{AEBABE36-E103-4E4B-84D4-B4546285C35A}.Debug|Win32.Build.0 = Debug|Win32
-		{AEBABE36-E103-4E4B-84D4-B4546285C35A}.Release|Win32.ActiveCfg = Release|Win32
-		{AEBABE36-E103-4E4B-84D4-B4546285C35A}.Release|Win32.Build.0 = Release|Win32
-		{F8C735BD-5D83-4E21-8548-7984792033DB}.Debug|Win32.ActiveCfg = Debug|Win32
-		{F8C735BD-5D83-4E21-8548-7984792033DB}.Debug|Win32.Build.0 = Debug|Win32
-		{F8C735BD-5D83-4E21-8548-7984792033DB}.Release|Win32.ActiveCfg = Release|Win32
-		{F8C735BD-5D83-4E21-8548-7984792033DB}.Release|Win32.Build.0 = Release|Win32
-		{BC86310C-0914-4F66-9272-30FD09900D70}.Debug|Win32.ActiveCfg = Debug|Win32
-		{BC86310C-0914-4F66-9272-30FD09900D70}.Debug|Win32.Build.0 = Debug|Win32
-		{BC86310C-0914-4F66-9272-30FD09900D70}.Release|Win32.ActiveCfg = Release|Win32
-		{BC86310C-0914-4F66-9272-30FD09900D70}.Release|Win32.Build.0 = Release|Win32
-		{C0209B44-8A45-4D9E-B430-100679BC6B2D}.Debug|Win32.ActiveCfg = Debug|Win32
-		{C0209B44-8A45-4D9E-B430-100679BC6B2D}.Debug|Win32.Build.0 = Debug|Win32
-		{C0209B44-8A45-4D9E-B430-100679BC6B2D}.Release|Win32.ActiveCfg = Release|Win32
-		{C0209B44-8A45-4D9E-B430-100679BC6B2D}.Release|Win32.Build.0 = Release|Win32
-		{99AD9500-BD7A-4996-9FA2-2E4EAE7E6BCB}.Debug|Win32.ActiveCfg = Debug|Win32
-		{99AD9500-BD7A-4996-9FA2-2E4EAE7E6BCB}.Debug|Win32.Build.0 = Debug|Win32
-		{99AD9500-BD7A-4996-9FA2-2E4EAE7E6BCB}.Release|Win32.ActiveCfg = Release|Win32
-		{99AD9500-BD7A-4996-9FA2-2E4EAE7E6BCB}.Release|Win32.Build.0 = Release|Win32
-		{CBA602BE-8FE4-4E68-A401-3C537EAA7239}.Debug|Win32.ActiveCfg = Debug|Win32
-		{CBA602BE-8FE4-4E68-A401-3C537EAA7239}.Debug|Win32.Build.0 = Debug|Win32
-		{CBA602BE-8FE4-4E68-A401-3C537EAA7239}.Release|Win32.ActiveCfg = Release|Win32
-		{CBA602BE-8FE4-4E68-A401-3C537EAA7239}.Release|Win32.Build.0 = Release|Win32
-		{B9549FB7-A259-4518-A9CD-9D2108C2C728}.Debug|Win32.ActiveCfg = Debug|Win32
-		{B9549FB7-A259-4518-A9CD-9D2108C2C728}.Debug|Win32.Build.0 = Debug|Win32
-		{B9549FB7-A259-4518-A9CD-9D2108C2C728}.Release|Win32.ActiveCfg = Release|Win32
-		{B9549FB7-A259-4518-A9CD-9D2108C2C728}.Release|Win32.Build.0 = Release|Win32
-		{8EC75FB4-951D-4A19-8DCD-ED2E97E4B234}.Debug|Win32.ActiveCfg = Debug|Win32
-		{8EC75FB4-951D-4A19-8DCD-ED2E97E4B234}.Debug|Win32.Build.0 = Debug|Win32
-		{8EC75FB4-951D-4A19-8DCD-ED2E97E4B234}.Release|Win32.ActiveCfg = Release|Win32
-		{8EC75FB4-951D-4A19-8DCD-ED2E97E4B234}.Release|Win32.Build.0 = Release|Win32
-		{5D3F321E-4A86-4842-9F45-105A7F373104}.Debug|Win32.ActiveCfg = Debug|Win32
-		{5D3F321E-4A86-4842-9F45-105A7F373104}.Debug|Win32.Build.0 = Debug|Win32
-		{5D3F321E-4A86-4842-9F45-105A7F373104}.Release|Win32.ActiveCfg = Release|Win32
-		{5D3F321E-4A86-4842-9F45-105A7F373104}.Release|Win32.Build.0 = Release|Win32
-		{898C9408-2480-4BF8-97B0-B1464B7BB5C4}.Debug|Win32.ActiveCfg = Debug|Win32
-		{898C9408-2480-4BF8-97B0-B1464B7BB5C4}.Debug|Win32.Build.0 = Debug|Win32
-		{898C9408-2480-4BF8-97B0-B1464B7BB5C4}.Release|Win32.ActiveCfg = Release|Win32
-		{898C9408-2480-4BF8-97B0-B1464B7BB5C4}.Release|Win32.Build.0 = Release|Win32
-		{BF6CA7A9-0767-4A4E-BC42-9B7C8E105991}.Debug|Win32.ActiveCfg = Debug|Win32
-		{BF6CA7A9-0767-4A4E-BC42-9B7C8E105991}.Debug|Win32.Build.0 = Debug|Win32
-		{BF6CA7A9-0767-4A4E-BC42-9B7C8E105991}.Release|Win32.ActiveCfg = Release|Win32
-		{BF6CA7A9-0767-4A4E-BC42-9B7C8E105991}.Release|Win32.Build.0 = Release|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/yaml-0.1.3/win32/vs2008/run_dumper.vcproj b/yaml-0.1.3/win32/vs2008/run_dumper.vcproj
deleted file mode 100644
index 36f1da0..0000000
--- a/yaml-0.1.3/win32/vs2008/run_dumper.vcproj
+++ /dev/null
@@ -1,201 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9,00"
-	Name="run_dumper"
-	ProjectGUID="{99AD9500-BD7A-4996-9FA2-2E4EAE7E6BCB}"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Output\Debug\bin"
-			IntermediateDirectory="Build\Debug\bin"
-			ConfigurationType="1"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/run_dumper.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/run_dumper.pdb"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Output\Release\bin"
-			IntermediateDirectory="Build\Release\bin"
-			ConfigurationType="1"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/run_dumper.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tests\run-dumper.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/yaml-0.1.3/win32/vs2008/run_emitter.vcproj b/yaml-0.1.3/win32/vs2008/run_emitter.vcproj
deleted file mode 100644
index 3021f2d..0000000
--- a/yaml-0.1.3/win32/vs2008/run_emitter.vcproj
+++ /dev/null
@@ -1,201 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9,00"
-	Name="run_emitter"
-	ProjectGUID="{CBA602BE-8FE4-4E68-A401-3C537EAA7239}"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Output\Debug\bin"
-			IntermediateDirectory="Build\Debug\bin"
-			ConfigurationType="1"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/run_emitter.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/run_emitter.pdb"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Output\Release\bin"
-			IntermediateDirectory="Build\Release\bin"
-			ConfigurationType="1"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/run_emitter.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tests\run-emitter.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/yaml-0.1.3/win32/vs2008/run_loader.vcproj b/yaml-0.1.3/win32/vs2008/run_loader.vcproj
deleted file mode 100644
index e2f1d62..0000000
--- a/yaml-0.1.3/win32/vs2008/run_loader.vcproj
+++ /dev/null
@@ -1,201 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9,00"
-	Name="run_loader"
-	ProjectGUID="{B9549FB7-A259-4518-A9CD-9D2108C2C728}"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Output\Debug\bin"
-			IntermediateDirectory="Build\Debug\bin"
-			ConfigurationType="1"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/run_loader.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/run_loader.pdb"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Output\Release\bin"
-			IntermediateDirectory="Build\Release\bin"
-			ConfigurationType="1"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/run_loader.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tests\run-loader.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/yaml-0.1.3/win32/vs2008/run_parser.vcproj b/yaml-0.1.3/win32/vs2008/run_parser.vcproj
deleted file mode 100644
index c98799d..0000000
--- a/yaml-0.1.3/win32/vs2008/run_parser.vcproj
+++ /dev/null
@@ -1,201 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9,00"
-	Name="run_parser"
-	ProjectGUID="{8EC75FB4-951D-4A19-8DCD-ED2E97E4B234}"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Output\Debug\bin"
-			IntermediateDirectory="Build\Debug\bin"
-			ConfigurationType="1"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/run_parser.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/run_parser.pdb"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Output\Release\bin"
-			IntermediateDirectory="Build\Release\bin"
-			ConfigurationType="1"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/run_parser.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tests\run-parser.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/yaml-0.1.3/win32/vs2008/run_scanner.vcproj b/yaml-0.1.3/win32/vs2008/run_scanner.vcproj
deleted file mode 100644
index 458ffc1..0000000
--- a/yaml-0.1.3/win32/vs2008/run_scanner.vcproj
+++ /dev/null
@@ -1,201 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9,00"
-	Name="run_scanner"
-	ProjectGUID="{5D3F321E-4A86-4842-9F45-105A7F373104}"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Output\Debug\bin"
-			IntermediateDirectory="Build\Debug\bin"
-			ConfigurationType="1"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/run_scanner.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/run_scanner.pdb"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Output\Release\bin"
-			IntermediateDirectory="Build\Release\bin"
-			ConfigurationType="1"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/run_scanner.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tests\run-scanner.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/yaml-0.1.3/win32/vs2008/test_reader.vcproj b/yaml-0.1.3/win32/vs2008/test_reader.vcproj
deleted file mode 100644
index ff384a3..0000000
--- a/yaml-0.1.3/win32/vs2008/test_reader.vcproj
+++ /dev/null
@@ -1,201 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9,00"
-	Name="test_reader"
-	ProjectGUID="{898C9408-2480-4BF8-97B0-B1464B7BB5C4}"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Output\Debug\bin"
-			IntermediateDirectory="Build\Debug\bin"
-			ConfigurationType="1"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/test_reader.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/test_reader.pdb"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Output\Release\bin"
-			IntermediateDirectory="Build\Release\bin"
-			ConfigurationType="1"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/test_reader.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tests\test-reader.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/yaml-0.1.3/win32/vs2008/test_version.vcproj b/yaml-0.1.3/win32/vs2008/test_version.vcproj
deleted file mode 100644
index 6ee630f..0000000
--- a/yaml-0.1.3/win32/vs2008/test_version.vcproj
+++ /dev/null
@@ -1,201 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9,00"
-	Name="test_version"
-	ProjectGUID="{BF6CA7A9-0767-4A4E-BC42-9B7C8E105991}"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Output\Debug\bin"
-			IntermediateDirectory="Build\Debug\bin"
-			ConfigurationType="1"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/test_version.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/test_version.pdb"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Output\Release\bin"
-			IntermediateDirectory="Build\Release\bin"
-			ConfigurationType="1"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="../../include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;YAML_DECLARE_STATIC"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/test_version.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tests\test-version.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/yaml-0.1.3/win32/vs2008/yaml.vcproj b/yaml-0.1.3/win32/vs2008/yaml.vcproj
deleted file mode 100644
index ad87e1f..0000000
--- a/yaml-0.1.3/win32/vs2008/yaml.vcproj
+++ /dev/null
@@ -1,215 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9,00"
-	Name="yaml"
-	ProjectGUID="{5CE8051A-3F0C-4C39-B1C0-3338E48BA60F}"
-	RootNamespace="yaml"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Output\Debug\lib"
-			IntermediateDirectory="Build\Debug\lib"
-			ConfigurationType="4"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..;../../include"
-				PreprocessorDefinitions="HAVE_CONFIG_H;YAML_DECLARE_STATIC"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="$(OutDir)/yaml.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Output\Release\lib"
-			IntermediateDirectory="Build\Release\lib"
-			ConfigurationType="4"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="..;../../include"
-				PreprocessorDefinitions="HAVE_CONFIG_H;YAML_DECLARE_STATIC"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="$(OutDir)/yaml.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\src\api.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\dumper.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\emitter.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\loader.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\parser.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\reader.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\scanner.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\writer.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\config.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\yaml.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\yaml_private.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/yaml-0.1.3/win32/vs2008/yamldll.vcproj b/yaml-0.1.3/win32/vs2008/yamldll.vcproj
deleted file mode 100644
index 6bd95f2..0000000
--- a/yaml-0.1.3/win32/vs2008/yamldll.vcproj
+++ /dev/null
@@ -1,243 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9,00"
-	Name="yamldll"
-	ProjectGUID="{019A6F4C-E704-4879-8E53-622BD4BC9C89}"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Output\Debug\lib\DLL"
-			IntermediateDirectory="Build\Debug\lib\DLL"
-			ConfigurationType="2"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..;../../include"
-				PreprocessorDefinitions="HAVE_CONFIG_H;YAML_DECLARE_EXPORT"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/yaml.dll"
-				LinkIncremental="2"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/yaml.pdb"
-				SubSystem="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(OutDir)/yaml.lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Output\Release\lib\DLL"
-			IntermediateDirectory="Build\Release\lib\DLL"
-			ConfigurationType="2"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="..;../../include"
-				PreprocessorDefinitions="HAVE_CONFIG_H;YAML_DECLARE_EXPORT"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/yaml.dll"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(OutDir)/yaml.lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\src\api.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\dumper.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\emitter.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\loader.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\parser.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\reader.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\scanner.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\writer.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\config.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\yaml.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\yaml_private.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/yaml-0.1.3/include/yaml.h b/yaml.h
similarity index 100%
rename from yaml-0.1.3/include/yaml.h
rename to yaml.h
diff --git a/yaml-0.1.3/src/yaml_private.h b/yaml_private.h
similarity index 100%
rename from yaml-0.1.3/src/yaml_private.h
rename to yaml_private.h
